Commit cee1d946 authored by David Brownell's avatar David Brownell Committed by Greg Kroah-Hartman

[PATCH] usbnet, Epson client

  * Tells about some Epson firmware that uses this as part
    of a Linux interop solution (PDA-ish SoCs, hmm)
  * Includes some GeneSys info from emails
  * Minor cleanups
parent f6c7055b
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
* *
* - AnchorChip 2720 * - AnchorChip 2720
* - Belkin, eTEK (interops with Win32 drivers) * - Belkin, eTEK (interops with Win32 drivers)
* - EPSON USB clients
* - GeneSys GL620USB-A * - GeneSys GL620USB-A
* - "Linux Devices" (like iPaq and similar SA-1100 based PDAs) * - "Linux Devices" (like iPaq and similar SA-1100 based PDAs)
* - NetChip 1080 (interoperates with NetChip Win32 drivers) * - NetChip 1080 (interoperates with NetChip Win32 drivers)
...@@ -23,7 +24,7 @@ ...@@ -23,7 +24,7 @@
* *
* USB devices can implement their side of this protocol at the cost * USB devices can implement their side of this protocol at the cost
* of two bulk endpoints; it's not restricted to "cable" applications. * of two bulk endpoints; it's not restricted to "cable" applications.
* See the LINUXDEV support. * See the LINUXDEV or EPSON device/client support.
* *
* *
* Status: * Status:
...@@ -57,7 +58,7 @@ ...@@ -57,7 +58,7 @@
* *
* Need smarter hotplug policy scripts ... ones that know how to arrange * Need smarter hotplug policy scripts ... ones that know how to arrange
* bridging with "brctl", and can handle static and dynamic ("pump") setups. * bridging with "brctl", and can handle static and dynamic ("pump") setups.
* Use those eventual "peer connected" events. * Use those eventual "peer connected" events, and zeroconf.
* *
* *
* CHANGELOG: * CHANGELOG:
...@@ -128,6 +129,7 @@ ...@@ -128,6 +129,7 @@
/* minidrivers _could_ be individually configured */ /* minidrivers _could_ be individually configured */
#define CONFIG_USB_AN2720 #define CONFIG_USB_AN2720
#define CONFIG_USB_BELKIN #define CONFIG_USB_BELKIN
#define CONFIG_USB_EPSON2888
#define CONFIG_USB_GENESYS #define CONFIG_USB_GENESYS
#define CONFIG_USB_LINUXDEV #define CONFIG_USB_LINUXDEV
#define CONFIG_USB_NET1080 #define CONFIG_USB_NET1080
...@@ -328,6 +330,29 @@ static const struct driver_info belkin_info = { ...@@ -328,6 +330,29 @@ static const struct driver_info belkin_info = {
#endif /* CONFIG_USB_BELKIN */ #endif /* CONFIG_USB_BELKIN */
#ifdef CONFIG_USB_EPSON2888
/*-------------------------------------------------------------------------
*
* EPSON USB clients
*
* This is the same idea as "linuxdev" (below) except the firmware in the
* device might not be Tux-powered. Epson provides reference firmware that
* implements this interface. Product developers can reuse or modify that
* code, such as by using their own product and vendor codes.
*
*-------------------------------------------------------------------------*/
static const struct driver_info epson2888_info = {
.description = "Epson USB Device",
.in = 4, .out = 3,
.epsize = 64,
};
#endif /* CONFIG_USB_EPSON2888 */
#ifdef CONFIG_USB_GENESYS #ifdef CONFIG_USB_GENESYS
...@@ -338,6 +363,15 @@ static const struct driver_info belkin_info = { ...@@ -338,6 +363,15 @@ static const struct driver_info belkin_info = {
* ... should partially interop with the Win32 driver for this hardware * ... should partially interop with the Win32 driver for this hardware
* The GeneSys docs imply there's some NDIS issue motivating this framing. * The GeneSys docs imply there's some NDIS issue motivating this framing.
* *
* Some info from GeneSys:
* - GL620USB-A is full duplex; GL620USB is only half duplex for bulk.
* (Some cables, like the BAFO-100c, use the half duplex version.)
* - For the full duplex model, the low bit of the version code says
* which side is which ("left/right").
* - For the half duplex type, a control/interrupt handshake settles
* the transfer direction. (That's disabled here, partially coded.)
* A control URB would block until other side writes an interrupt.
*
*-------------------------------------------------------------------------*/ *-------------------------------------------------------------------------*/
// control msg write command // control msg write command
...@@ -504,13 +538,6 @@ static int genelink_free (struct usbnet *dev) ...@@ -504,13 +538,6 @@ static int genelink_free (struct usbnet *dev)
#endif #endif
// reset the device status
static int genelink_reset (struct usbnet *dev)
{
// we don't need to reset, just return 0
return 0;
}
static int genelink_rx_fixup (struct usbnet *dev, struct sk_buff *skb) static int genelink_rx_fixup (struct usbnet *dev, struct sk_buff *skb)
{ {
struct gl_header *header; struct gl_header *header;
...@@ -632,7 +659,6 @@ genelink_tx_fixup (struct usbnet *dev, struct sk_buff *skb, int flags) ...@@ -632,7 +659,6 @@ genelink_tx_fixup (struct usbnet *dev, struct sk_buff *skb, int flags)
static const struct driver_info genelink_info = { static const struct driver_info genelink_info = {
.description = "Genesys GeneLink", .description = "Genesys GeneLink",
.flags = FLAG_FRAMING_GL | FLAG_NO_SETINT, .flags = FLAG_FRAMING_GL | FLAG_NO_SETINT,
.reset = genelink_reset,
.rx_fixup = genelink_rx_fixup, .rx_fixup = genelink_rx_fixup,
.tx_fixup = genelink_tx_fixup, .tx_fixup = genelink_tx_fixup,
...@@ -662,25 +688,19 @@ static const struct driver_info genelink_info = { ...@@ -662,25 +688,19 @@ static const struct driver_info genelink_info = {
* *
* One example is Intel's SA-1100 chip, which integrates basic USB * One example is Intel's SA-1100 chip, which integrates basic USB
* support (arch/arm/sa1100/usb-eth.c); it's used in the iPaq PDA. * support (arch/arm/sa1100/usb-eth.c); it's used in the iPaq PDA.
* And others too, like the Yopy.
* *
*-------------------------------------------------------------------------*/ *-------------------------------------------------------------------------*/
static int linuxdev_check_connect (struct usbnet *dev)
{
return 0; // by definition, always connected
}
static const struct driver_info linuxdev_info = { static const struct driver_info linuxdev_info = {
.description = "Linux Device", .description = "Linux Device",
// no reset defined (yet?)
.check_connect =linuxdev_check_connect,
.in = 2, .out = 1, .in = 2, .out = 1,
.epsize =64, .epsize = 64,
}; };
#endif /* CONFIG_USB_LINUXDEV */ #endif /* CONFIG_USB_LINUXDEV */
#ifdef CONFIG_USB_NET1080 #ifdef CONFIG_USB_NET1080
...@@ -2049,9 +2069,7 @@ static const struct usb_device_id products [] = { ...@@ -2049,9 +2069,7 @@ static const struct usb_device_id products [] = {
{ {
USB_DEVICE (0x0547, 0x2720), // AnchorChips defaults USB_DEVICE (0x0547, 0x2720), // AnchorChips defaults
.driver_info = (unsigned long) &an2720_info, .driver_info = (unsigned long) &an2720_info,
}, }, {
{
USB_DEVICE (0x0547, 0x2727), // Xircom PGUNET USB_DEVICE (0x0547, 0x2727), // Xircom PGUNET
.driver_info = (unsigned long) &an2720_info, .driver_info = (unsigned long) &an2720_info,
}, },
...@@ -2070,11 +2088,21 @@ static const struct usb_device_id products [] = { ...@@ -2070,11 +2088,21 @@ static const struct usb_device_id products [] = {
}, },
#endif #endif
#ifdef CONFIG_USB_EPSON2888
{
USB_DEVICE (0x0525, 0x2888), // EPSON USB client
driver_info: (unsigned long) &epson2888_info,
},
#endif
#ifdef CONFIG_USB_GENESYS #ifdef CONFIG_USB_GENESYS
{ {
USB_DEVICE (0x05e3, 0x0502), // GL620USB-A USB_DEVICE (0x05e3, 0x0502), // GL620USB-A
.driver_info = (unsigned long) &genelink_info, .driver_info = (unsigned long) &genelink_info,
}, },
/* NOT: USB_DEVICE (0x05e3, 0x0501), // GL620USB
* that's half duplex, not currently supported
*/
#endif #endif
#ifdef CONFIG_USB_LINUXDEV #ifdef CONFIG_USB_LINUXDEV
...@@ -2098,8 +2126,7 @@ static const struct usb_device_id products [] = { ...@@ -2098,8 +2126,7 @@ static const struct usb_device_id products [] = {
{ {
USB_DEVICE (0x0525, 0x1080), // NetChip ref design USB_DEVICE (0x0525, 0x1080), // NetChip ref design
.driver_info = (unsigned long) &net1080_info, .driver_info = (unsigned long) &net1080_info,
}, }, {
{
USB_DEVICE (0x06D0, 0x0622), // Laplink Gold USB_DEVICE (0x06D0, 0x0622), // Laplink Gold
.driver_info = (unsigned long) &net1080_info, .driver_info = (unsigned long) &net1080_info,
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment