* [PATCH] tiglusb.c: add direct USB support on some new TI handhelds {Scanned}
@ 2004-09-28 18:13 Romain Lievin
2004-09-29 19:55 ` Greg KH
0 siblings, 1 reply; 2+ messages in thread
From: Romain Lievin @ 2004-09-28 18:13 UTC (permalink / raw)
To: Linux Kernel Mailing List, Greg Kroah
Hi,
I have extended my driver to add support of the embedded USB port provided by
some new Texas Instruments' handhelds. Things are the same except for the
maximum packet size.
Comments are welcome... Otherwise, please apply.
Thanks, Romain.
====================[cut here]=======================
diff -Naur linux-2.6.8.1/Documentation/usb/silverlink.txt linux/Documentation/usb/silverlink.txt
--- linux-2.6.8.1/Documentation/usb/silverlink.txt 2004-08-14 12:55:10.000000000 +0200
+++ linux/Documentation/usb/silverlink.txt 2004-09-26 15:16:15.000000000 +0200
@@ -1,5 +1,6 @@
-------------------------------------------------------------------------
Readme for Linux device driver for the Texas Instruments SilverLink cable
+and direct USB cable provided by some TI's handhelds.
-------------------------------------------------------------------------
Author: Romain Liévin & Julien Blache
@@ -9,7 +10,8 @@
This is a driver for the TI-GRAPH LINK USB (aka SilverLink) cable, a cable
designed by TI for connecting their TI8x/9x calculators to a computer
-(PC or Mac usually).
+(PC or Mac usually). It has been extended to support the USB port offered by
+some latest TI handhelds (TI84+ and TI89 Titanium).
If you need more information, please visit the 'SilverLink drivers' homepage
at the above URL.
@@ -73,4 +75,4 @@
CREDITS:
The code is based on dabusb.c, printer.c and scanner.c !
-The driver has been developed independently of Texas Instruments.
+The driver has been developed independently of Texas Instruments Inc.
diff -Naur linux-2.6.8.1/drivers/usb/misc/tiglusb.c linux/drivers/usb/misc/tiglusb.c
--- linux-2.6.8.1/drivers/usb/misc/tiglusb.c 2004-08-14 12:54:47.000000000 +0200
+++ linux/drivers/usb/misc/tiglusb.c 2004-09-26 15:39:34.000000000 +0200
@@ -4,7 +4,7 @@
* Target: Texas Instruments graphing calculators (http://lpg.ticalc.org).
*
* Copyright (C) 2001-2004:
- * Romain Lievin <roms@lpg.ticalc.org>
+ * Romain Lievin <roms@tilp.info>
* Julien BLACHE <jb@technologeek.org>
* under the terms of the GNU General Public License.
*
@@ -14,7 +14,7 @@
* and the website at: http://lpg.ticalc.org/prj_usb/
* for more info.
*
- * History :
+ * History:
* 1.0x, Romain & Julien: initial submit.
* 1.03, Greg Kroah: modifications.
* 1.04, Julien: clean-up & fixes; Romain: 2.4 backport.
@@ -22,6 +22,7 @@
* 1.06, Romain: synched with 2.5, version/firmware changed (confusing).
* 1.07, Romain: fixed bad use of usb_clear_halt (invalid argument);
* timeout argument checked in ioctl + clean-up.
+ * 1.08, Romain: added support of USB port embedded on some TI's handhelds.
*/
#include <linux/module.h>
@@ -41,7 +42,7 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "1.07"
+#define DRIVER_VERSION "1.08"
#define DRIVER_AUTHOR "Romain Lievin <roms@tilp.info> & Julien Blache <jb@jblache.org>"
#define DRIVER_DESC "TI-GRAPH LINK USB (aka SilverLink) driver"
#define DRIVER_LICENSE "GPL"
@@ -177,11 +178,11 @@
if (!s->dev)
return -EIO;
- buffer = kmalloc(BULK_RCV_MAX, GFP_KERNEL);
+ buffer = kmalloc (s->max_ps, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
- bytes_to_read = (count >= BULK_RCV_MAX) ? BULK_RCV_MAX : count;
+ bytes_to_read = (count >= s->max_ps) ? s->max_ps : count;
pipe = usb_rcvbulkpipe (s->dev, 1);
result = usb_bulk_msg (s->dev, pipe, buffer, bytes_to_read,
@@ -234,11 +235,11 @@
if (!s->dev)
return -EIO;
- buffer = kmalloc(BULK_SND_MAX, GFP_KERNEL);
+ buffer = kmalloc (s->max_ps, GFP_KERNEL);
if (!buffer)
return -ENOMEM;
- bytes_to_write = (count >= BULK_SND_MAX) ? BULK_SND_MAX : count;
+ bytes_to_write = (count >= s->max_ps) ? s->max_ps : count;
if (copy_from_user (buffer, buf, bytes_to_write)) {
ret = -EFAULT;
goto out;
@@ -308,6 +309,15 @@
if (clear_pipes (s->dev))
ret = -EIO;
break;
+ case IOCTL_TIUSB_GET_MAXPS:
+ if (copy_to_user((int *) arg, &s->max_ps, sizeof(int)))
+ return -EFAULT;
+ break;
+ case IOCTL_TIUSB_GET_DEVID:
+ if (copy_to_user((int *) arg, &s->dev->descriptor.idProduct,
+ sizeof(int)))
+ return -EFAULT;
+ break;
default:
ret = -ENOTTY;
break;
@@ -340,6 +350,9 @@
int minor = -1;
int i, err = 0;
ptiglusb_t s;
+ struct usb_host_config *conf;
+ struct usb_host_interface *ifdata = NULL;
+ int max_ps;
dbg ("probing vendor id 0x%x, device id 0x%x",
dev->descriptor.idVendor, dev->descriptor.idProduct);
@@ -354,19 +367,31 @@
goto out;
}
- if ((dev->descriptor.idProduct != 0xe001)
- && (dev->descriptor.idVendor != 0x451)) {
+ if (dev->descriptor.idVendor != 0x451) {
err = -ENODEV;
goto out;
}
- // NOTE: it's already in this config, this shouldn't be needed.
- // is this working around some hardware bug?
- if (usb_reset_configuration (dev) < 0) {
- err ("tiglusb_probe: reset_configuration failed");
- err = -ENODEV;
- goto out;
- }
+ if ((dev->descriptor.idProduct != 0xe001) &&
+ (dev->descriptor.idProduct != 0xe004) &&
+ (dev->descriptor.idProduct != 0xe008)) {
+ err = -ENODEV;
+ goto out;
+ }
+
+ /*
+ * TI introduced some new handhelds with embedded USB port.
+ * Port advertises same config as SilverLink cable but with a
+ * different maximum packet size (64 rather than 32).
+ */
+
+ conf = dev->actconfig;
+ ifdata = conf->interface[0]->cur_altsetting;
+ max_ps = ifdata->endpoint[0].desc.wMaxPacketSize;
+
+ info("max packet size of %d/%d bytes\n",
+ ifdata->endpoint[0].desc.wMaxPacketSize,
+ ifdata->endpoint[1].desc.wMaxPacketSize);
/*
* Find a tiglusb struct
@@ -389,6 +414,7 @@
down (&s->mutex);
s->remove_pending = 0;
s->dev = dev;
+ s->max_ps = max_ps;
up (&s->mutex);
dbg ("bound to interface");
diff -Naur linux-2.6.8.1/drivers/usb/misc/tiglusb.h linux/drivers/usb/misc/tiglusb.h
--- linux-2.6.8.1/drivers/usb/misc/tiglusb.h 2004-08-14 12:56:23.000000000 +0200
+++ linux/drivers/usb/misc/tiglusb.h 2004-09-26 15:27:17.000000000 +0200
@@ -18,12 +18,6 @@
#define MAXTIGL 16
/*
- * Max. packetsize for IN and OUT pipes
- */
-#define BULK_RCV_MAX 32
-#define BULK_SND_MAX 32
-
-/*
* The driver context...
*/
@@ -42,6 +36,8 @@
driver_state_t state; /* started/stopped */
int opened; /* tru if open */
int remove_pending;
+
+ int max_ps; /* max packet size */
} tiglusb_t, *ptiglusb_t;
#endif
diff -Naur linux-2.6.8.1/include/linux/ticable.h linux/include/linux/ticable.h
--- linux-2.6.8.1/include/linux/ticable.h 2004-08-14 12:56:00.000000000 +0200
+++ linux/include/linux/ticable.h 2004-09-26 15:25:53.000000000 +0200
@@ -38,5 +38,7 @@
#define IOCTL_TIUSB_TIMEOUT _IOW('N', 0x20, int) /* set timeout */
#define IOCTL_TIUSB_RESET_DEVICE _IOW('N', 0x21, int) /* reset device */
#define IOCTL_TIUSB_RESET_PIPES _IOW('N', 0x22, int) /* reset both pipes*/
+#define IOCTL_TIUSB_GET_MAXPS _IOR('N', 0x23, int) /* max packet size */
+#define IOCTL_TIUSB_GET_DEVID _IOR('N', 0x24, int) /* get device type */
#endif /* TICABLE_H */
--
Romain Liévin : <roms@lievin.net>
Web site : http://www.lievin.net
"Linux, y'a moins bien mais c'est plus cher !"
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] tiglusb.c: add direct USB support on some new TI handhelds {Scanned}
2004-09-28 18:13 [PATCH] tiglusb.c: add direct USB support on some new TI handhelds {Scanned} Romain Lievin
@ 2004-09-29 19:55 ` Greg KH
0 siblings, 0 replies; 2+ messages in thread
From: Greg KH @ 2004-09-29 19:55 UTC (permalink / raw)
To: Romain Lievin; +Cc: Linux Kernel Mailing List
On Tue, Sep 28, 2004 at 08:13:47PM +0200, Romain Lievin wrote:
> Hi,
>
> I have extended my driver to add support of the embedded USB port provided by
> some new Texas Instruments' handhelds. Things are the same except for the
> maximum packet size.
>
> Comments are welcome... Otherwise, please apply.
Looks ok, but could you please resend it, with the "Signed-off-by:" line
added to the description (as per the Documentation/SubmittingPatches
file details.) I also got 3 copies of this patch from you, were there
any differences in them?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2004-09-29 21:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-09-28 18:13 [PATCH] tiglusb.c: add direct USB support on some new TI handhelds {Scanned} Romain Lievin
2004-09-29 19:55 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox