Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 93289
b: refs/heads/master
c: 3d6aa32
h: refs/heads/master
i:
  93287: 368049c
v: v3
  • Loading branch information
Mike Isely authored and Greg Kroah-Hartman committed Apr 25, 2008
1 parent ce5a181 commit 3e99c78
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3416eaa1f8f8d516b77de514e14cf8da256d28fb
refs/heads/master: 3d6aa3206540e1e68bda9e8ea11ec71444f1ac71
21 changes: 19 additions & 2 deletions trunk/drivers/usb/serial/cypress_m8.c
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ struct cypress_private {
__u8 current_config; /* stores the current configuration byte */
__u8 rx_flags; /* throttling - used from whiteheat/ftdi_sio */
enum packet_format pkt_fmt; /* format to use for packet send / receive */
int get_cfg_unsafe; /* If true, the CYPRESS_GET_CONFIG is unsafe */
int baud_rate; /* stores current baud rate in integer form */
int cbr_mask; /* stores current baud rate in masked form */
int isthrottled; /* if throttled, discard reads */
Expand Down Expand Up @@ -401,6 +402,12 @@ static int cypress_serial_control (struct usb_serial_port *port, unsigned baud_m
}
break;
case CYPRESS_GET_CONFIG:
if (priv->get_cfg_unsafe) {
/* Not implemented for this device,
and if we try to do it we're likely
to crash the hardware. */
return -ENOTTY;
}
dbg("%s - retreiving serial line settings", __FUNCTION__);
/* set initial values in feature buffer */
memset(feature_buffer, 0, sizeof(feature_buffer));
Expand Down Expand Up @@ -570,20 +577,30 @@ static int generic_startup (struct usb_serial *serial)
static int cypress_earthmate_startup (struct usb_serial *serial)
{
struct cypress_private *priv;
struct usb_serial_port *port = serial->port[0];

dbg("%s", __FUNCTION__);

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

priv = usb_get_serial_port_data(serial->port[0]);
priv = usb_get_serial_port_data(port);
priv->chiptype = CT_EARTHMATE;
/* All Earthmate devices use the separated-count packet
format! Idiotic. */
priv->pkt_fmt = packet_format_1;
if (serial->dev->descriptor.idProduct != PRODUCT_ID_EARTHMATEUSB) {
/* The old original USB Earthmate seemed able to
handle GET_CONFIG requests; everything they've
produced since that time crashes if this command is
attempted :-( */
dbg("%s - Marking this device as unsafe for GET_CONFIG "
"commands", __func__);
priv->get_cfg_unsafe = !0;
}

return 0;
} /* cypress_earthmate_startup */
Expand Down

0 comments on commit 3e99c78

Please sign in to comment.