• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/usb/serial/

Lines Matching refs:garmin_data_p

186 static int gsp_next_packet(struct garmin_data *garmin_data_p);
288 static int pkt_add(struct garmin_data *garmin_data_p,
301 dev_err(&garmin_data_p->port->dev, "out of memory\n");
307 spin_lock_irqsave(&garmin_data_p->lock, flags);
308 garmin_data_p->flags |= FLAGS_QUEUING;
309 result = list_empty(&garmin_data_p->pktlist);
310 pkt->seq = garmin_data_p->seq_counter++;
311 list_add_tail(&pkt->list, &garmin_data_p->pktlist);
312 state = garmin_data_p->state;
313 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
321 gsp_next_packet(garmin_data_p);
328 static struct garmin_packet *pkt_pop(struct garmin_data *garmin_data_p)
333 spin_lock_irqsave(&garmin_data_p->lock, flags);
334 if (!list_empty(&garmin_data_p->pktlist)) {
335 result = (struct garmin_packet *)garmin_data_p->pktlist.next;
338 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
344 static void pkt_clear(struct garmin_data *garmin_data_p)
351 spin_lock_irqsave(&garmin_data_p->lock, flags);
352 while (!list_empty(&garmin_data_p->pktlist)) {
353 result = (struct garmin_packet *)garmin_data_p->pktlist.next;
357 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
366 static int gsp_send_ack(struct garmin_data *garmin_data_p, __u8 pkt_id)
395 send_to_tty(garmin_data_p->port, pkt, l);
404 * the complete packet (pktid ... cksum) is in garmin_data_p->inbuf starting
411 static int gsp_rec_packet(struct garmin_data *garmin_data_p, int count)
413 const __u8 *recpkt = garmin_data_p->inbuffer+GSP_INITIAL_OFFSET;
414 __le32 *usbdata = (__le32 *) garmin_data_p->inbuffer;
421 usb_serial_debug_data(debug, &garmin_data_p->port->dev,
455 garmin_write_bulk(garmin_data_p->port, garmin_data_p->inbuffer,
460 if (isAbortTrfCmnd(garmin_data_p->inbuffer)) {
461 garmin_data_p->flags |= FLAGS_DROP_DATA;
462 pkt_clear(garmin_data_p);
488 static int gsp_receive(struct garmin_data *garmin_data_p,
504 spin_lock_irqsave(&garmin_data_p->lock, flags);
505 dest = garmin_data_p->inbuffer;
506 size = garmin_data_p->insize;
507 dleSeen = garmin_data_p->flags & FLAGS_GSP_DLESEEN;
508 skip = garmin_data_p->flags & FLAGS_GSP_SKIP;
509 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
548 gsp_rec_packet(garmin_data_p, size);
575 spin_lock_irqsave(&garmin_data_p->lock, flags);
577 garmin_data_p->insize = size;
581 garmin_data_p->flags |= FLAGS_GSP_SKIP;
583 garmin_data_p->flags &= ~FLAGS_GSP_SKIP;
586 garmin_data_p->flags |= FLAGS_GSP_DLESEEN;
588 garmin_data_p->flags &= ~FLAGS_GSP_DLESEEN;
590 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
593 if (gsp_next_packet(garmin_data_p) > 0)
594 garmin_data_p->state = STATE_ACTIVE;
596 garmin_data_p->state = STATE_GSP_WAIT_DATA;
610 static int gsp_send(struct garmin_data *garmin_data_p,
622 garmin_data_p->state, count);
624 k = garmin_data_p->outsize;
627 garmin_data_p->outsize = 0;
631 memcpy(garmin_data_p->outbuffer+k, buf, count);
633 garmin_data_p->outsize = k;
636 pktid = getPacketId(garmin_data_p->outbuffer);
637 datalen = getDataLength(garmin_data_p->outbuffer);
647 /* garmin_data_p->outbuffer now contains a complete packet */
649 usb_serial_debug_data(debug, &garmin_data_p->port->dev,
650 __func__, k, garmin_data_p->outbuffer);
652 garmin_data_p->outsize = 0;
654 if (GARMIN_LAYERID_APPL != getLayerId(garmin_data_p->outbuffer)) {
656 getLayerId(garmin_data_p->outbuffer));
673 src = garmin_data_p->outbuffer+GARMIN_PKTHDR_LENGTH;
679 src = garmin_data_p->outbuffer+GARMIN_PKTHDR_LENGTH;
683 dst = garmin_data_p->outbuffer+GPS_OUT_BUFSIZ-datalen;
688 dst = garmin_data_p->outbuffer;
713 i = dst-garmin_data_p->outbuffer;
715 send_to_tty(garmin_data_p->port, garmin_data_p->outbuffer, i);
717 garmin_data_p->pkt_id = pktid;
718 garmin_data_p->state = STATE_WAIT_TTY_ACK;
727 static int gsp_next_packet(struct garmin_data *garmin_data_p)
732 while ((pkt = pkt_pop(garmin_data_p)) != NULL) {
734 result = gsp_send(garmin_data_p, pkt->data, pkt->size);
759 static int nat_receive(struct garmin_data *garmin_data_p,
770 if (garmin_data_p->insize >= GARMIN_PKTHDR_LENGTH)
772 +getDataLength(garmin_data_p->inbuffer);
780 garmin_data_p->insize = 0;
784 len -= garmin_data_p->insize;
788 dest = garmin_data_p->inbuffer
789 + garmin_data_p->insize;
791 garmin_data_p->insize += len;
797 if (garmin_data_p->insize >= GARMIN_PKTHDR_LENGTH) {
799 getDataLength(garmin_data_p->inbuffer);
800 if (garmin_data_p->insize >= len) {
801 garmin_write_bulk(garmin_data_p->port,
802 garmin_data_p->inbuffer,
804 garmin_data_p->insize = 0;
808 if (isAbortTrfCmnd(garmin_data_p->inbuffer)) {
809 spin_lock_irqsave(&garmin_data_p->lock,
811 garmin_data_p->flags |= FLAGS_DROP_DATA;
813 &garmin_data_p->lock, flags);
814 pkt_clear(garmin_data_p);
829 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
830 __le32 *pkt = (__le32 *)garmin_data_p->privpkt;
836 pkt[4] = __cpu_to_le32(garmin_data_p->mode);
837 pkt[5] = __cpu_to_le32(garmin_data_p->serial_num);
851 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
853 spin_lock_irqsave(&garmin_data_p->lock, flags);
854 garmin_data_p->flags &= ~(CLEAR_HALT_REQUIRED);
855 garmin_data_p->state = STATE_RESET;
856 garmin_data_p->serial_num = 0;
857 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
873 static int garmin_clear(struct garmin_data *garmin_data_p)
879 pkt_clear(garmin_data_p);
881 spin_lock_irqsave(&garmin_data_p->lock, flags);
882 garmin_data_p->insize = 0;
883 garmin_data_p->outsize = 0;
884 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
893 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
915 garmin_data_p->state = STATE_ACTIVE;
939 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
943 spin_lock_irqsave(&garmin_data_p->lock, flags);
944 garmin_data_p->mode = initial_mode;
945 garmin_data_p->count = 0;
946 garmin_data_p->flags = 0;
947 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
953 if (garmin_data_p->state == STATE_RESET)
956 garmin_data_p->state = STATE_ACTIVE;
964 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
967 port->number, garmin_data_p->mode,
968 garmin_data_p->state, garmin_data_p->flags);
976 garmin_clear(garmin_data_p);
983 if (garmin_data_p->state != STATE_RESET)
984 garmin_data_p->state = STATE_DISCONNECTED;
995 struct garmin_data *garmin_data_p =
1002 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) {
1003 gsp_send_ack(garmin_data_p,
1024 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1030 garmin_data_p->state);
1032 spin_lock_irqsave(&garmin_data_p->lock, flags);
1033 garmin_data_p->flags &= ~FLAGS_DROP_DATA;
1034 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1063 spin_lock_irqsave(&garmin_data_p->lock, flags);
1064 garmin_data_p->flags |= APP_REQ_SEEN;
1065 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1067 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) {
1068 pkt_clear(garmin_data_p);
1069 garmin_data_p->state = STATE_GSP_WAIT_DATA;
1093 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1094 __le32 *privpkt = (__le32 *)garmin_data_p->privpkt;
1098 if (garmin_data_p->state == STATE_RESET)
1107 memcpy(garmin_data_p->privpkt, buf, len);
1109 pktsiz = getDataLength(garmin_data_p->privpkt);
1110 pktid = getPacketId(garmin_data_p->privpkt);
1114 getLayerId(garmin_data_p->privpkt)) {
1120 garmin_clear(garmin_data_p);
1135 garmin_data_p->mode = __le32_to_cpu(privpkt[3]);
1137 __func__, garmin_data_p->mode);
1154 garmin_data_p->mode);
1161 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) {
1162 return gsp_receive(garmin_data_p, buf, count);
1164 return nat_receive(garmin_data_p, buf, count);
1175 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1176 return GPS_OUT_BUFSIZ-garmin_data_p->outsize;
1180 static void garmin_read_process(struct garmin_data *garmin_data_p,
1185 if (garmin_data_p->flags & FLAGS_DROP_DATA) {
1188 } else if (garmin_data_p->state != STATE_DISCONNECTED &&
1189 garmin_data_p->state != STATE_RESET) {
1194 if (garmin_data_p->flags & FLAGS_QUEUING) {
1195 pkt_add(garmin_data_p, data, data_length);
1198 spin_lock_irqsave(&garmin_data_p->lock, flags);
1199 garmin_data_p->flags |= APP_RESP_SEEN;
1200 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1202 if (garmin_data_p->mode == MODE_GARMIN_SERIAL) {
1203 pkt_add(garmin_data_p, data, data_length);
1205 send_to_tty(garmin_data_p->port, data,
1219 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1240 garmin_read_process(garmin_data_p, data, urb->actual_length);
1243 0 != (garmin_data_p->flags & FLAGS_BULK_IN_RESTART)) {
1244 spin_lock_irqsave(&garmin_data_p->lock, flags);
1245 garmin_data_p->flags &= ~FLAGS_BULK_IN_RESTART;
1246 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1254 if (0 == (garmin_data_p->flags & FLAGS_THROTTLED)) {
1263 spin_lock_irqsave(&garmin_data_p->lock, flags);
1264 garmin_data_p->flags &= ~FLAGS_BULK_IN_ACTIVE;
1265 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1277 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1307 if (0 == (garmin_data_p->flags & FLAGS_BULK_IN_ACTIVE)) {
1322 spin_lock_irqsave(&garmin_data_p->lock, flags);
1323 garmin_data_p->flags |= FLAGS_BULK_IN_ACTIVE;
1324 spin_unlock_irqrestore(&garmin_data_p->lock,
1329 spin_lock_irqsave(&garmin_data_p->lock, flags);
1330 garmin_data_p->flags |= FLAGS_BULK_IN_RESTART;
1331 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1338 spin_lock_irqsave(&garmin_data_p->lock, flags);
1339 garmin_data_p->flags |= FLAGS_SESSION_REPLY1_SEEN;
1340 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1343 garmin_data_p->serial_num = __le32_to_cpup(
1347 __func__, garmin_data_p->serial_num);
1350 garmin_read_process(garmin_data_p, data, urb->actual_length);
1366 static int garmin_flush_queue(struct garmin_data *garmin_data_p)
1371 if ((garmin_data_p->flags & FLAGS_THROTTLED) == 0) {
1372 pkt = pkt_pop(garmin_data_p);
1374 send_to_tty(garmin_data_p->port, pkt->data, pkt->size);
1376 mod_timer(&garmin_data_p->timer, (1)+jiffies);
1379 spin_lock_irqsave(&garmin_data_p->lock, flags);
1380 garmin_data_p->flags &= ~FLAGS_QUEUING;
1381 spin_unlock_irqrestore(&garmin_data_p->lock, flags);
1391 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1396 spin_lock_irq(&garmin_data_p->lock);
1397 garmin_data_p->flags |= FLAGS_QUEUING|FLAGS_THROTTLED;
1398 spin_unlock_irq(&garmin_data_p->lock);
1405 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1409 spin_lock_irq(&garmin_data_p->lock);
1410 garmin_data_p->flags &= ~FLAGS_THROTTLED;
1411 spin_unlock_irq(&garmin_data_p->lock);
1415 if (garmin_data_p->mode == MODE_NATIVE)
1416 garmin_flush_queue(garmin_data_p);
1418 if (0 != (garmin_data_p->flags & FLAGS_BULK_IN_ACTIVE)) {
1434 struct garmin_data *garmin_data_p = (struct garmin_data *) data;
1437 if (garmin_data_p->mode == MODE_NATIVE)
1438 if (garmin_data_p->flags & FLAGS_QUEUING)
1439 garmin_flush_queue(garmin_data_p);
1448 struct garmin_data *garmin_data_p = NULL;
1452 garmin_data_p = kzalloc(sizeof(struct garmin_data), GFP_KERNEL);
1453 if (garmin_data_p == NULL) {
1457 init_timer(&garmin_data_p->timer);
1458 spin_lock_init(&garmin_data_p->lock);
1459 INIT_LIST_HEAD(&garmin_data_p->pktlist);
1460 /* garmin_data_p->timer.expires = jiffies + session_timeout; */
1461 garmin_data_p->timer.data = (unsigned long)garmin_data_p;
1462 garmin_data_p->timer.function = timeout_handler;
1463 garmin_data_p->port = port;
1464 garmin_data_p->state = 0;
1465 garmin_data_p->count = 0;
1466 usb_set_serial_port_data(port, garmin_data_p);
1477 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1482 del_timer_sync(&garmin_data_p->timer);
1489 struct garmin_data *garmin_data_p = usb_get_serial_port_data(port);
1493 kfree(garmin_data_p);