Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 22076
b: refs/heads/master
c: a5c44e2
h: refs/heads/master
v: v3
  • Loading branch information
Lonnie Mendez authored and Greg Kroah-Hartman committed Mar 20, 2006
1 parent 28f033c commit b71c30d
Show file tree
Hide file tree
Showing 3 changed files with 76 additions and 1 deletion.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a847423905c6a8ccd6671d05f5877d893d10cd9f
refs/heads/master: a5c44e29e5637b5e6fe59d225eb4f438688b3849
70 changes: 70 additions & 0 deletions trunk/drivers/usb/serial/cypress_m8.c
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,16 @@ static struct usb_device_id id_table_cyphidcomrs232 [] = {
{ } /* Terminating entry */
};

static struct usb_device_id id_table_nokiaca42v2 [] = {
{ USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) },
{ } /* Terminating entry */
};

static struct usb_device_id id_table_combined [] = {
{ USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB) },
{ USB_DEVICE(VENDOR_ID_DELORME, PRODUCT_ID_EARTHMATEUSB_LT20) },
{ USB_DEVICE(VENDOR_ID_CYPRESS, PRODUCT_ID_CYPHIDCOM) },
{ USB_DEVICE(VENDOR_ID_DAZZLE, PRODUCT_ID_CA42) },
{ } /* Terminating entry */
};

Expand Down Expand Up @@ -149,6 +155,7 @@ struct cypress_buf {
/* function prototypes for the Cypress USB to serial device */
static int cypress_earthmate_startup (struct usb_serial *serial);
static int cypress_hidcom_startup (struct usb_serial *serial);
static int cypress_ca42v2_startup (struct usb_serial *serial);
static void cypress_shutdown (struct usb_serial *serial);
static int cypress_open (struct usb_serial_port *port, struct file *filp);
static void cypress_close (struct usb_serial_port *port, struct file *filp);
Expand Down Expand Up @@ -235,6 +242,34 @@ static struct usb_serial_driver cypress_hidcom_device = {
.write_int_callback = cypress_write_int_callback,
};

static struct usb_serial_driver cypress_ca42v2_device = {
.driver = {
.owner = THIS_MODULE,
.name = "nokiaca42v2",
},
.description = "Nokia CA-42 V2 Adapter",
.id_table = id_table_nokiaca42v2,
.num_interrupt_in = 1,
.num_interrupt_out = 1,
.num_bulk_in = NUM_DONT_CARE,
.num_bulk_out = NUM_DONT_CARE,
.num_ports = 1,
.attach = cypress_ca42v2_startup,
.shutdown = cypress_shutdown,
.open = cypress_open,
.close = cypress_close,
.write = cypress_write,
.write_room = cypress_write_room,
.ioctl = cypress_ioctl,
.set_termios = cypress_set_termios,
.tiocmget = cypress_tiocmget,
.tiocmset = cypress_tiocmset,
.chars_in_buffer = cypress_chars_in_buffer,
.throttle = cypress_throttle,
.unthrottle = cypress_unthrottle,
.read_int_callback = cypress_read_int_callback,
.write_int_callback = cypress_write_int_callback,
};

/*****************************************************************************
* Cypress serial helper functions
Expand Down Expand Up @@ -286,6 +321,12 @@ static int cypress_serial_control (struct usb_serial_port *port, unsigned baud_m
__FUNCTION__);
new_baudrate = priv->baud_rate;
}
} else if (priv->chiptype == CT_CA42V2) {
if ( (new_baudrate = mask_to_rate(baud_mask)) == -1) {
err("%s - failed setting baud rate, unsupported speed",
__FUNCTION__);
new_baudrate = priv->baud_rate;
}
} else if (priv->chiptype == CT_GENERIC) {
if ( (new_baudrate = mask_to_rate(baud_mask)) == -1) {
err("%s - failed setting baud rate, unsupported speed",
Expand Down Expand Up @@ -499,6 +540,25 @@ static int cypress_hidcom_startup (struct usb_serial *serial)
} /* cypress_hidcom_startup */


static int cypress_ca42v2_startup (struct usb_serial *serial)
{
struct cypress_private *priv;

dbg("%s", __FUNCTION__);

if (generic_startup(serial)) {
dbg("%s - Failed setting up port %d", __FUNCTION__,
serial->port[0]->number);
return 1;
}

priv = usb_get_serial_port_data(serial->port[0]);
priv->chiptype = CT_CA42V2;

return 0;
} /* cypress_ca42v2_startup */


static void cypress_shutdown (struct usb_serial *serial)
{
struct cypress_private *priv;
Expand Down Expand Up @@ -943,6 +1003,10 @@ static void cypress_set_termios (struct usb_serial_port *port,
*(tty->termios) = tty_std_termios;
tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL |
CLOCAL;
} else if (priv->chiptype == CT_CA42V2) {
*(tty->termios) = tty_std_termios;
tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL |
CLOCAL;
}
priv->termios_initialized = 1;
}
Expand Down Expand Up @@ -1541,6 +1605,9 @@ static int __init cypress_init(void)
retval = usb_serial_register(&cypress_hidcom_device);
if (retval)
goto failed_hidcom_register;
retval = usb_serial_register(&cypress_ca42v2_device);
if (retval)
goto failed_ca42v2_register;
retval = usb_register(&cypress_driver);
if (retval)
goto failed_usb_register;
Expand All @@ -1549,6 +1616,8 @@ static int __init cypress_init(void)
return 0;
failed_usb_register:
usb_deregister(&cypress_driver);
failed_ca42v2_register:
usb_serial_deregister(&cypress_ca42v2_device);
failed_hidcom_register:
usb_serial_deregister(&cypress_hidcom_device);
failed_em_register:
Expand All @@ -1565,6 +1634,7 @@ static void __exit cypress_exit (void)
usb_deregister (&cypress_driver);
usb_serial_deregister (&cypress_earthmate_device);
usb_serial_deregister (&cypress_hidcom_device);
usb_serial_deregister (&cypress_ca42v2_device);
}


Expand Down
5 changes: 5 additions & 0 deletions trunk/drivers/usb/serial/cypress_m8.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
/* Cypress HID->COM RS232 Adapter */
#define VENDOR_ID_CYPRESS 0x04b4
#define PRODUCT_ID_CYPHIDCOM 0x5500

/* Nokia CA-42 USB to serial cable */
#define VENDOR_ID_DAZZLE 0x07d0
#define PRODUCT_ID_CA42 0x4101
/* End of device listing */

/* Used for setting / requesting serial line settings */
Expand All @@ -34,6 +38,7 @@

#define CT_EARTHMATE 0x01
#define CT_CYPHIDCOM 0x02
#define CT_CA42V2 0x03
#define CT_GENERIC 0x0F
/* End of chiptype definitions */

Expand Down

0 comments on commit b71c30d

Please sign in to comment.