Commit d50e9cba authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman

USB keyspan driver

  
  general cleanups:
  	- removed commented out function prototypes
  	- removed duplicate function prototypes
  	- removed unneeded #include
  	- added named initializers
  	- merged lots of the individual device structures into general 1, 2, and 4 port structures.
parent f7462f7b
...@@ -175,13 +175,9 @@ struct keyspan_port_private { ...@@ -175,13 +175,9 @@ struct keyspan_port_private {
static int __init keyspan_init (void) static int __init keyspan_init (void)
{ {
usb_serial_register (&keyspan_pre_device); usb_serial_register (&keyspan_pre_device);
usb_serial_register (&keyspan_usa18x_device); usb_serial_register (&keyspan_1port_device);
usb_serial_register (&keyspan_usa19_device); usb_serial_register (&keyspan_2port_device);
usb_serial_register (&keyspan_usa28_device); usb_serial_register (&keyspan_4port_device);
usb_serial_register (&keyspan_usa28x_device);
usb_serial_register (&keyspan_usa28xa_device);
/* We don't need a separate entry for the usa28xb as it appears as a 28x anyway */
usb_serial_register (&keyspan_usa49w_device);
info(DRIVER_VERSION ":" DRIVER_DESC); info(DRIVER_VERSION ":" DRIVER_DESC);
...@@ -191,13 +187,9 @@ static int __init keyspan_init (void) ...@@ -191,13 +187,9 @@ static int __init keyspan_init (void)
static void __exit keyspan_exit (void) static void __exit keyspan_exit (void)
{ {
usb_serial_deregister (&keyspan_pre_device); usb_serial_deregister (&keyspan_pre_device);
usb_serial_deregister (&keyspan_usa18x_device); usb_serial_deregister (&keyspan_1port_device);
usb_serial_deregister (&keyspan_usa19_device); usb_serial_deregister (&keyspan_2port_device);
usb_serial_deregister (&keyspan_usa28_device); usb_serial_deregister (&keyspan_4port_device);
usb_serial_deregister (&keyspan_usa28x_device);
usb_serial_deregister (&keyspan_usa28xa_device);
/* We don't need a separate entry for the usa28xb as it appears as a 28x anyway */
usb_serial_deregister (&keyspan_usa49w_device);
} }
module_init(keyspan_init); module_init(keyspan_init);
......
...@@ -33,9 +33,8 @@ ...@@ -33,9 +33,8 @@
#ifndef __LINUX_USB_SERIAL_KEYSPAN_H #ifndef __LINUX_USB_SERIAL_KEYSPAN_H
#define __LINUX_USB_SERIAL_KEYSPAN_H #define __LINUX_USB_SERIAL_KEYSPAN_H
#include <linux/config.h>
/* Function prototypes for Keyspan serial converter */ /* Function prototypes for Keyspan serial converter */
static int keyspan_open (struct usb_serial_port *port, static int keyspan_open (struct usb_serial_port *port,
struct file *filp); struct file *filp);
static void keyspan_close (struct usb_serial_port *port, static void keyspan_close (struct usb_serial_port *port,
...@@ -54,12 +53,7 @@ static int keyspan_write (struct usb_serial_port *port, ...@@ -54,12 +53,7 @@ static int keyspan_write (struct usb_serial_port *port,
static void keyspan_send_setup (struct usb_serial_port *port, static void keyspan_send_setup (struct usb_serial_port *port,
int reset_port); int reset_port);
#if 0
static void keyspan_write_bulk_callback (struct urb *urb);
#endif
//static void keyspan_usa26_read_int_callback (struct urb *urb);
//static void keyspan_usa28_read_int_callback (struct urb *urb);
static int keyspan_chars_in_buffer (struct usb_serial_port *port); static int keyspan_chars_in_buffer (struct usb_serial_port *port);
static int keyspan_ioctl (struct usb_serial_port *port, static int keyspan_ioctl (struct usb_serial_port *port,
struct file *file, struct file *file,
...@@ -82,7 +76,6 @@ static int keyspan_usa19w_calc_baud (u32 baud_rate, u32 baudclk, ...@@ -82,7 +76,6 @@ static int keyspan_usa19w_calc_baud (u32 baud_rate, u32 baudclk,
static int keyspan_usa28_calc_baud (u32 baud_rate, u32 baudclk, static int keyspan_usa28_calc_baud (u32 baud_rate, u32 baudclk,
u8 *rate_hi, u8 *rate_low, u8 *rate_hi, u8 *rate_low,
u8 *prescaler, int portnum); u8 *prescaler, int portnum);
//static void keyspan_usa19_setup_urbs (struct usb_serial *serial);
static int keyspan_usa28_send_setup (struct usb_serial *serial, static int keyspan_usa28_send_setup (struct usb_serial *serial,
struct usb_serial_port *port, struct usb_serial_port *port,
...@@ -94,18 +87,16 @@ static int keyspan_usa49_send_setup (struct usb_serial *serial, ...@@ -94,18 +87,16 @@ static int keyspan_usa49_send_setup (struct usb_serial *serial,
struct usb_serial_port *port, struct usb_serial_port *port,
int reset_port); int reset_port);
/* Functions from usbserial.c for ezusb firmware handling */
extern int ezusb_set_reset (struct usb_serial *serial, unsigned char reset_bit);
extern int ezusb_writememory (struct usb_serial *serial, int address, unsigned char *data, int length, __u8 bRequest);
/* Struct used for firmware - increased size of data section /* Struct used for firmware - increased size of data section
to allow Keyspan's 'C' firmware struct to be used unmodified */ to allow Keyspan's 'C' firmware struct to be used unmodified */
struct ezusb_hex_record { struct ezusb_hex_record {
__u16 address; __u16 address;
__u8 data_size; __u8 data_size;
__u8 data[64]; __u8 data[64];
}; };
/* Conditionally include firmware images, if they aren't
/* Conditionally include firmware images, if they aren't
included create a null pointer instead. Current included create a null pointer instead. Current
firmware images aren't optimised to remove duplicate firmware images aren't optimised to remove duplicate
addresses in the image itself. */ addresses in the image itself. */
...@@ -169,7 +160,7 @@ struct ezusb_hex_record { ...@@ -169,7 +160,7 @@ struct ezusb_hex_record {
static const struct ezusb_hex_record *keyspan_usa49w_firmware = NULL; static const struct ezusb_hex_record *keyspan_usa49w_firmware = NULL;
#endif #endif
/* Values used for baud rate calculation - device specific */ /* Values used for baud rate calculation - device specific */
#define KEYSPAN_INVALID_BAUD_RATE (-1) #define KEYSPAN_INVALID_BAUD_RATE (-1)
#define KEYSPAN_BAUD_RATE_OK (0) #define KEYSPAN_BAUD_RATE_OK (0)
#define KEYSPAN_USA18X_BAUDCLK (12000000L) /* a guess */ #define KEYSPAN_USA18X_BAUDCLK (12000000L) /* a guess */
...@@ -179,15 +170,15 @@ struct ezusb_hex_record { ...@@ -179,15 +170,15 @@ struct ezusb_hex_record {
#define KEYSPAN_USA28X_BAUDCLK (12000000L) #define KEYSPAN_USA28X_BAUDCLK (12000000L)
#define KEYSPAN_USA49W_BAUDCLK (48000000L) #define KEYSPAN_USA49W_BAUDCLK (48000000L)
/* Some constants used to characterise each device. */ /* Some constants used to characterise each device. */
#define KEYSPAN_MAX_NUM_PORTS (4) #define KEYSPAN_MAX_NUM_PORTS (4)
#define KEYSPAN_MAX_FLIPS (2) #define KEYSPAN_MAX_FLIPS (2)
/* Device info for the Keyspan serial converter, used /* Device info for the Keyspan serial converter, used
by the overall usb-serial probe function */ by the overall usb-serial probe function */
#define KEYSPAN_VENDOR_ID (0x06cd) #define KEYSPAN_VENDOR_ID (0x06cd)
/* Product IDs for the eight products supported, pre-renumeration */ /* Product IDs for the products supported, pre-renumeration */
#define keyspan_usa18x_pre_product_id 0x0105 #define keyspan_usa18x_pre_product_id 0x0105
#define keyspan_usa19_pre_product_id 0x0103 #define keyspan_usa19_pre_product_id 0x0103
#define keyspan_usa19qi_pre_product_id 0x010b #define keyspan_usa19qi_pre_product_id 0x010b
...@@ -199,7 +190,7 @@ struct ezusb_hex_record { ...@@ -199,7 +190,7 @@ struct ezusb_hex_record {
#define keyspan_usa28xb_pre_product_id 0x0113 #define keyspan_usa28xb_pre_product_id 0x0113
#define keyspan_usa49w_pre_product_id 0x0109 #define keyspan_usa49w_pre_product_id 0x0109
/* Product IDs post-renumeration. Note that the 28x and 28xb /* Product IDs post-renumeration. Note that the 28x and 28xb
have the same id's post-renumeration but behave identically have the same id's post-renumeration but behave identically
so it's not an issue. */ so it's not an issue. */
#define keyspan_usa18x_product_id 0x0112 #define keyspan_usa18x_product_id 0x0112
...@@ -253,154 +244,154 @@ struct keyspan_device_details { ...@@ -253,154 +244,154 @@ struct keyspan_device_details {
u32 baudclk; u32 baudclk;
}; };
/* Now for each device type we setup the device detail /* Now for each device type we setup the device detail
structure with the appropriate information (provided structure with the appropriate information (provided
in Keyspan's documentation) */ in Keyspan's documentation) */
static const struct keyspan_device_details usa18x_device_details = { static const struct keyspan_device_details usa18x_device_details = {
keyspan_usa18x_product_id, /* product ID */ product_id: keyspan_usa18x_product_id,
msg_usa26, /* msg type*/ msg_format: msg_usa26,
1, /* num ports */ num_ports: 1,
0, /* indat endpoint flip */ indat_endp_flip: 0,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81}, /* per port indat */ indat_endpoints: {0x81},
{0x01}, /* per port outdat */ outdat_endpoints: {0x01},
{0x85}, /* per port inack */ inack_endpoints: {0x85},
{0x05}, /* per port outcont */ outcont_endpoints: {0x05},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA18X_BAUDCLK /* base baud clock */ baudclk: KEYSPAN_USA18X_BAUDCLK,
}; };
static const struct keyspan_device_details usa19_device_details = { static const struct keyspan_device_details usa19_device_details = {
keyspan_usa19_product_id, /* product ID */ product_id: keyspan_usa19_product_id,
msg_usa28, /* msg type*/ msg_format: msg_usa28,
1, /* num ports */ num_ports: 1,
1, /* indat endpoint flip */ indat_endp_flip: 1,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81}, /* per port indat */ indat_endpoints: {0x81},
{0x01}, /* per port outdat */ outdat_endpoints: {0x01},
{0x83}, /* per port inack */ inack_endpoints: {0x83},
{0x03}, /* per port outcont */ outcont_endpoints: {0x03},
0x84, /* instat endpoint */ instat_endpoint: 0x84,
-1, /* glocont endpoint */ glocont_endpoint: -1,
keyspan_usa19_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19_calc_baud,
KEYSPAN_USA19_BAUDCLK /* base baud clock */ baudclk: KEYSPAN_USA19_BAUDCLK,
}; };
static const struct keyspan_device_details usa19qi_device_details = { static const struct keyspan_device_details usa19qi_device_details = {
keyspan_usa19qi_product_id, /* product ID */ product_id: keyspan_usa19qi_product_id,
msg_usa28, /* msg type*/ msg_format: msg_usa28,
1, /* num ports */ num_ports: 1,
1, /* indat endpoint flip */ indat_endp_flip: 1,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81}, /* per port indat */ indat_endpoints: {0x81},
{0x01}, /* per port outdat */ outdat_endpoints: {0x01},
{0x83}, /* per port inack */ inack_endpoints: {0x83},
{0x03}, /* per port outcont */ outcont_endpoints: {0x03},
0x84, /* instat endpoint */ instat_endpoint: 0x84,
-1, /* glocont endpoint */ glocont_endpoint: -1,
keyspan_usa28_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa28_calc_baud,
KEYSPAN_USA19_BAUDCLK /* base baud clock */ baudclk: KEYSPAN_USA19_BAUDCLK,
}; };
static const struct keyspan_device_details usa19qw_device_details = { static const struct keyspan_device_details usa19qw_device_details = {
keyspan_usa19qw_product_id, /* product ID */ product_id: keyspan_usa19qw_product_id,
msg_usa26, /* msg type*/ msg_format: msg_usa26,
1, /* num ports */ num_ports: 1,
0, /* indat endpoint flip */ indat_endp_flip: 0,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81}, /* per port indat */ indat_endpoints: {0x81},
{0x01}, /* per port outdat */ outdat_endpoints: {0x01},
{0x85}, /* per port inack */ inack_endpoints: {0x85},
{0x05}, /* per port outcont */ outcont_endpoints: {0x05},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA19W_BAUDCLK /* base baud clock */ baudclk: KEYSPAN_USA19W_BAUDCLK,
}; };
static const struct keyspan_device_details usa19w_device_details = { static const struct keyspan_device_details usa19w_device_details = {
keyspan_usa19w_product_id, /* product ID */ product_id: keyspan_usa19w_product_id,
msg_usa26, /* msg type*/ msg_format: msg_usa26,
1, /* num ports */ num_ports: 1,
0, /* indat endpoint flip */ indat_endp_flip: 0,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81}, /* per port indat */ indat_endpoints: {0x81},
{0x01}, /* per port outdat */ outdat_endpoints: {0x01},
{0x85}, /* per port inack */ inack_endpoints: {0x85},
{0x05}, /* per port outcont */ outcont_endpoints: {0x05},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA19W_BAUDCLK /* base baud clock */ baudclk: KEYSPAN_USA19W_BAUDCLK,
}; };
static const struct keyspan_device_details usa28_device_details = { static const struct keyspan_device_details usa28_device_details = {
keyspan_usa28_product_id, /* product ID */ product_id: keyspan_usa28_product_id,
msg_usa28, /* msg type*/ msg_format: msg_usa28,
2, /* num ports */ num_ports: 2,
1, /* indat endpoint flip */ indat_endp_flip: 1,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81, 0x83}, /* per port indat */ indat_endpoints: {0x81, 0x83},
{0x01, 0x03}, /* per port outdat */ outdat_endpoints: {0x01, 0x03},
{0x85, 0x86}, /* per port inack */ inack_endpoints: {0x85, 0x86},
{0x05, 0x06}, /* per port outcont */ outcont_endpoints: {0x05, 0x06},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa28_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa28_calc_baud,
KEYSPAN_USA28_BAUDCLK baudclk: KEYSPAN_USA28_BAUDCLK,
}; };
static const struct keyspan_device_details usa28x_device_details = { static const struct keyspan_device_details usa28x_device_details = {
keyspan_usa28x_product_id, /* product ID */ product_id: keyspan_usa28x_product_id,
msg_usa26, /* msg type*/ msg_format: msg_usa26,
2, /* num ports */ num_ports: 2,
0, /* indat endpoint flip */ indat_endp_flip: 0,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81, 0x83}, /* per port indat */ indat_endpoints: {0x81, 0x83},
{0x01, 0x03}, /* per port outdat */ outdat_endpoints: {0x01, 0x03},
{0x85, 0x86}, /* per port inack */ inack_endpoints: {0x85, 0x86},
{0x05, 0x06}, /* per port outcont */ outcont_endpoints: {0x05, 0x06},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA28X_BAUDCLK baudclk: KEYSPAN_USA28X_BAUDCLK,
}; };
static const struct keyspan_device_details usa28xa_device_details = { static const struct keyspan_device_details usa28xa_device_details = {
keyspan_usa28xa_product_id, /* product ID */ product_id: keyspan_usa28xa_product_id,
msg_usa26, /* msg type*/ msg_format: msg_usa26,
2, /* num ports */ num_ports: 2,
0, /* indat endpoint flip */ indat_endp_flip: 0,
1, /* outdat endpoint flip */ outdat_endp_flip: 1,
{0x81, 0x83}, /* per port indat */ indat_endpoints: {0x81, 0x83},
{0x01, 0x03}, /* per port outdat */ outdat_endpoints: {0x01, 0x03},
{0x85, 0x86}, /* per port inack */ inack_endpoints: {0x85, 0x86},
{0x05, 0x06}, /* per port outcont */ outcont_endpoints: {0x05, 0x06},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA28X_BAUDCLK baudclk: KEYSPAN_USA28X_BAUDCLK,
}; };
/* We don't need a separate entry for the usa28xb as it appears as a 28x anyway */ /* We don't need a separate entry for the usa28xb as it appears as a 28x anyway */
static const struct keyspan_device_details usa49w_device_details = { static const struct keyspan_device_details usa49w_device_details = {
keyspan_usa49w_product_id, /* product ID */ product_id: keyspan_usa49w_product_id,
msg_usa49, /* msg type*/ msg_format: msg_usa49,
4, /* num ports */ num_ports: 4,
0, /* indat endpoint flip */ indat_endp_flip: 0,
0, /* outdat endpoint flip */ outdat_endp_flip: 0,
{ 0x81, 0x82, 0x83, 0x84}, /* per port indat */ indat_endpoints: {0x81, 0x82, 0x83, 0x84},
{ 0x01, 0x02, 0x03, 0x04}, /* per port outdat */ outdat_endpoints: {0x01, 0x02, 0x03, 0x04},
{-1, -1, -1, -1}, /* per port inack */ inack_endpoints: {-1, -1, -1, -1},
{-1, -1, -1, -1}, /* per port outcont */ outcont_endpoints: {-1, -1, -1, -1},
0x87, /* instat endpoint */ instat_endpoint: 0x87,
0x07, /* glocont endpoint */ glocont_endpoint: 0x07,
keyspan_usa19w_calc_baud, /* calc baud rate */ calculate_baud_rate: keyspan_usa19w_calc_baud,
KEYSPAN_USA49W_BAUDCLK baudclk: KEYSPAN_USA49W_BAUDCLK,
}; };
static const struct keyspan_device_details *keyspan_devices[] = { static const struct keyspan_device_details *keyspan_devices[] = {
...@@ -414,7 +405,7 @@ static const struct keyspan_device_details *keyspan_devices[] = { ...@@ -414,7 +405,7 @@ static const struct keyspan_device_details *keyspan_devices[] = {
&usa28xa_device_details, &usa28xa_device_details,
/* 28xb not required as it renumerates as a 28x */ /* 28xb not required as it renumerates as a 28x */
&usa49w_device_details, &usa49w_device_details,
NULL NULL,
}; };
static __devinitdata struct usb_device_id keyspan_ids_combined[] = { static __devinitdata struct usb_device_id keyspan_ids_combined[] = {
...@@ -443,10 +434,6 @@ static __devinitdata struct usb_device_id keyspan_ids_combined[] = { ...@@ -443,10 +434,6 @@ static __devinitdata struct usb_device_id keyspan_ids_combined[] = {
MODULE_DEVICE_TABLE(usb, keyspan_ids_combined); MODULE_DEVICE_TABLE(usb, keyspan_ids_combined);
/* Eventually, we will not need separate id tables for each USB
ID pattern. But, for now, it looks like we need slightly different
behavior for each match. */
/* usb_device_id table for the pre-firmware download keyspan devices */ /* usb_device_id table for the pre-firmware download keyspan devices */
static __devinitdata struct usb_device_id keyspan_pre_ids[] = { static __devinitdata struct usb_device_id keyspan_pre_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa18x_pre_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa18x_pre_product_id) },
...@@ -462,12 +449,8 @@ static __devinitdata struct usb_device_id keyspan_pre_ids[] = { ...@@ -462,12 +449,8 @@ static __devinitdata struct usb_device_id keyspan_pre_ids[] = {
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
static __devinitdata struct usb_device_id keyspan_usa18x_ids[] = { static __devinitdata struct usb_device_id keyspan_1port_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa18x_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa18x_product_id) },
{ } /* Terminating entry */
};
static __devinitdata struct usb_device_id keyspan_usa19_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19_product_id) },
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19qi_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19qi_product_id) },
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19qw_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa19qw_product_id) },
...@@ -475,27 +458,19 @@ static __devinitdata struct usb_device_id keyspan_usa19_ids[] = { ...@@ -475,27 +458,19 @@ static __devinitdata struct usb_device_id keyspan_usa19_ids[] = {
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
static __devinitdata struct usb_device_id keyspan_usa28_ids[] = { static __devinitdata struct usb_device_id keyspan_2port_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28_product_id) },
{ } /* Terminating entry */
};
static __devinitdata struct usb_device_id keyspan_usa28x_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28x_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28x_product_id) },
{ } /* Terminating entry */
};
static __devinitdata struct usb_device_id keyspan_usa28xa_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28xa_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa28xa_product_id) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
static __devinitdata struct usb_device_id keyspan_usa49w_ids[] = { static __devinitdata struct usb_device_id keyspan_4port_ids[] = {
{ USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa49w_product_id) }, { USB_DEVICE(KEYSPAN_VENDOR_ID, keyspan_usa49w_product_id) },
{ } /* Terminating entry */ { } /* Terminating entry */
}; };
/* Structs for the devices, pre and post renumeration. */ /* Structs for the devices, pre and post renumeration. */
static struct usb_serial_device_type keyspan_pre_device = { static struct usb_serial_device_type keyspan_pre_device = {
owner: THIS_MODULE, owner: THIS_MODULE,
name: "Keyspan - (without firmware)", name: "Keyspan - (without firmware)",
...@@ -504,14 +479,13 @@ static struct usb_serial_device_type keyspan_pre_device = { ...@@ -504,14 +479,13 @@ static struct usb_serial_device_type keyspan_pre_device = {
num_bulk_in: NUM_DONT_CARE, num_bulk_in: NUM_DONT_CARE,
num_bulk_out: NUM_DONT_CARE, num_bulk_out: NUM_DONT_CARE,
num_ports: 1, num_ports: 1,
startup: keyspan_fake_startup startup: keyspan_fake_startup,
}; };
static struct usb_serial_device_type keyspan_1port_device = {
static struct usb_serial_device_type keyspan_usa18x_device = {
owner: THIS_MODULE, owner: THIS_MODULE,
name: "Keyspan USA18X", name: "Keyspan 1 port adapter",
id_table: keyspan_usa18x_ids, id_table: keyspan_1port_ids,
num_interrupt_in: NUM_DONT_CARE, num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: 3, num_bulk_in: 3,
num_bulk_out: 4, num_bulk_out: 4,
...@@ -530,78 +504,10 @@ static struct usb_serial_device_type keyspan_usa18x_device = { ...@@ -530,78 +504,10 @@ static struct usb_serial_device_type keyspan_usa18x_device = {
shutdown: keyspan_shutdown, shutdown: keyspan_shutdown,
}; };
static struct usb_serial_device_type keyspan_usa19_device = { static struct usb_serial_device_type keyspan_2port_device = {
owner: THIS_MODULE,
name: "Keyspan USA19",
id_table: keyspan_usa19_ids,
num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: 3,
num_bulk_out: 4,
num_ports: 1,
open: keyspan_open,
close: keyspan_close,
write: keyspan_write,
write_room: keyspan_write_room,
chars_in_buffer: keyspan_chars_in_buffer,
throttle: keyspan_rx_throttle,
unthrottle: keyspan_rx_unthrottle,
ioctl: keyspan_ioctl,
set_termios: keyspan_set_termios,
break_ctl: keyspan_break_ctl,
startup: keyspan_startup,
shutdown: keyspan_shutdown,
};
static struct usb_serial_device_type keyspan_usa28_device = {
owner: THIS_MODULE,
name: "Keyspan USA28",
id_table: keyspan_usa28_ids,
num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: NUM_DONT_CARE,
num_bulk_out: NUM_DONT_CARE,
num_ports: 2,
open: keyspan_open,
close: keyspan_close,
write: keyspan_write,
write_room: keyspan_write_room,
chars_in_buffer: keyspan_chars_in_buffer,
throttle: keyspan_rx_throttle,
unthrottle: keyspan_rx_unthrottle,
ioctl: keyspan_ioctl,
set_termios: keyspan_set_termios,
startup: keyspan_startup,
shutdown: keyspan_shutdown,
};
static struct usb_serial_device_type keyspan_usa28x_device = {
owner: THIS_MODULE,
name: "Keyspan USA28X/XB",
id_table: keyspan_usa28x_ids,
num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: NUM_DONT_CARE,
num_bulk_out: NUM_DONT_CARE,
num_ports: 2,
open: keyspan_open,
close: keyspan_close,
write: keyspan_write,
write_room: keyspan_write_room,
chars_in_buffer: keyspan_chars_in_buffer,
throttle: keyspan_rx_throttle,
unthrottle: keyspan_rx_unthrottle,
ioctl: keyspan_ioctl,
set_termios: keyspan_set_termios,
break_ctl: keyspan_break_ctl,
startup: keyspan_startup,
shutdown: keyspan_shutdown,
};
static struct usb_serial_device_type keyspan_usa28xa_device = {
owner: THIS_MODULE, owner: THIS_MODULE,
name: "Keyspan USA28XA", name: "Keyspan 2 port adapter",
id_table: keyspan_usa28xa_ids, id_table: keyspan_2port_ids,
num_interrupt_in: NUM_DONT_CARE, num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: NUM_DONT_CARE, num_bulk_in: NUM_DONT_CARE,
num_bulk_out: NUM_DONT_CARE, num_bulk_out: NUM_DONT_CARE,
...@@ -615,16 +521,14 @@ static struct usb_serial_device_type keyspan_usa28xa_device = { ...@@ -615,16 +521,14 @@ static struct usb_serial_device_type keyspan_usa28xa_device = {
unthrottle: keyspan_rx_unthrottle, unthrottle: keyspan_rx_unthrottle,
ioctl: keyspan_ioctl, ioctl: keyspan_ioctl,
set_termios: keyspan_set_termios, set_termios: keyspan_set_termios,
break_ctl: keyspan_break_ctl,
startup: keyspan_startup, startup: keyspan_startup,
shutdown: keyspan_shutdown, shutdown: keyspan_shutdown,
}; };
static struct usb_serial_device_type keyspan_usa49w_device = { static struct usb_serial_device_type keyspan_4port_device = {
owner: THIS_MODULE, owner: THIS_MODULE,
name: "Keyspan USA49W", name: "Keyspan 4 port adapter",
id_table: keyspan_usa49w_ids, id_table: keyspan_4port_ids,
num_interrupt_in: NUM_DONT_CARE, num_interrupt_in: NUM_DONT_CARE,
num_bulk_in: 5, num_bulk_in: 5,
num_bulk_out: 5, num_bulk_out: 5,
...@@ -643,5 +547,4 @@ static struct usb_serial_device_type keyspan_usa49w_device = { ...@@ -643,5 +547,4 @@ static struct usb_serial_device_type keyspan_usa49w_device = {
shutdown: keyspan_shutdown, shutdown: keyspan_shutdown,
}; };
#endif #endif
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