Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 248738
b: refs/heads/master
c: b4026c4
h: refs/heads/master
v: v3
  • Loading branch information
Hermann Kneissel authored and Greg Kroah-Hartman committed Apr 30, 2011
1 parent 985eeb9 commit 2c6e04f
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 8 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: 7701846fd52f86dffe50715e0e63154088b7c982
refs/heads/master: b4026c4584cd70858d4d3450abfb1cd0714d4f32
20 changes: 13 additions & 7 deletions trunk/drivers/usb/serial/garmin_gps.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/*
* Garmin GPS driver
*
* Copyright (C) 2006-2009 Hermann Kneissel herkne@users.sourceforge.net
* Copyright (C) 2006-2011 Hermann Kneissel herkne@gmx.de
*
* The latest version of the driver can be found at
* http://sourceforge.net/projects/garmin-gps/
Expand Down Expand Up @@ -51,7 +51,7 @@ static int debug;
*/

#define VERSION_MAJOR 0
#define VERSION_MINOR 33
#define VERSION_MINOR 36

#define _STR(s) #s
#define _DRIVER_VERSION(a, b) "v" _STR(a) "." _STR(b)
Expand Down Expand Up @@ -410,6 +410,7 @@ static int gsp_send_ack(struct garmin_data *garmin_data_p, __u8 pkt_id)
*/
static int gsp_rec_packet(struct garmin_data *garmin_data_p, int count)
{
unsigned long flags;
const __u8 *recpkt = garmin_data_p->inbuffer+GSP_INITIAL_OFFSET;
__le32 *usbdata = (__le32 *) garmin_data_p->inbuffer;

Expand Down Expand Up @@ -458,7 +459,9 @@ static int gsp_rec_packet(struct garmin_data *garmin_data_p, int count)
/* if this was an abort-transfer command, flush all
queued data. */
if (isAbortTrfCmnd(garmin_data_p->inbuffer)) {
spin_lock_irqsave(&garmin_data_p->lock, flags);
garmin_data_p->flags |= FLAGS_DROP_DATA;
spin_unlock_irqrestore(&garmin_data_p->lock, flags);
pkt_clear(garmin_data_p);
}

Expand Down Expand Up @@ -943,7 +946,7 @@ static int garmin_open(struct tty_struct *tty, struct usb_serial_port *port)
spin_lock_irqsave(&garmin_data_p->lock, flags);
garmin_data_p->mode = initial_mode;
garmin_data_p->count = 0;
garmin_data_p->flags = 0;
garmin_data_p->flags &= FLAGS_SESSION_REPLY1_SEEN;
spin_unlock_irqrestore(&garmin_data_p->lock, flags);

/* shutdown any bulk reads that might be going on */
Expand Down Expand Up @@ -1178,7 +1181,8 @@ static int garmin_write_room(struct tty_struct *tty)


static void garmin_read_process(struct garmin_data *garmin_data_p,
unsigned char *data, unsigned data_length)
unsigned char *data, unsigned data_length,
int bulk_data)
{
unsigned long flags;

Expand All @@ -1193,7 +1197,8 @@ static void garmin_read_process(struct garmin_data *garmin_data_p,
send it directly to the tty port */
if (garmin_data_p->flags & FLAGS_QUEUING) {
pkt_add(garmin_data_p, data, data_length);
} else if (getLayerId(data) == GARMIN_LAYERID_APPL) {
} else if (bulk_data ||
getLayerId(data) == GARMIN_LAYERID_APPL) {

spin_lock_irqsave(&garmin_data_p->lock, flags);
garmin_data_p->flags |= APP_RESP_SEEN;
Expand Down Expand Up @@ -1237,7 +1242,7 @@ static void garmin_read_bulk_callback(struct urb *urb)
usb_serial_debug_data(debug, &port->dev,
__func__, urb->actual_length, data);

garmin_read_process(garmin_data_p, data, urb->actual_length);
garmin_read_process(garmin_data_p, data, urb->actual_length, 1);

if (urb->actual_length == 0 &&
0 != (garmin_data_p->flags & FLAGS_BULK_IN_RESTART)) {
Expand Down Expand Up @@ -1346,7 +1351,7 @@ static void garmin_read_int_callback(struct urb *urb)
__func__, garmin_data_p->serial_num);
}

garmin_read_process(garmin_data_p, data, urb->actual_length);
garmin_read_process(garmin_data_p, data, urb->actual_length, 0);

port->interrupt_in_urb->dev = port->serial->dev;
retval = usb_submit_urb(urb, GFP_ATOMIC);
Expand Down Expand Up @@ -1461,6 +1466,7 @@ static int garmin_attach(struct usb_serial *serial)
garmin_data_p->timer.function = timeout_handler;
garmin_data_p->port = port;
garmin_data_p->state = 0;
garmin_data_p->flags = 0;
garmin_data_p->count = 0;
usb_set_serial_port_data(port, garmin_data_p);

Expand Down

0 comments on commit 2c6e04f

Please sign in to comment.