aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/class/cdc-acm.h
diff options
context:
space:
mode:
authorOliver Neukum <neukum@fachschaft.cup.uni-muenchen.de>2006-05-13 16:50:47 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-21 18:04:08 -0400
commit86478944eba887f149e151bacc023ae4b2d23ea6 (patch)
tree21c9871c1524c75cc702e0fbaa7700e82a9f744f /drivers/usb/class/cdc-acm.h
parent5cd330f4f30eb154e7af9210bed42dfcd447997f (diff)
[PATCH] USB: cdc-acm: add a new special case for modems with buggy firmware
this fixes the "duplicated text" bug. There's a modem that cannot cope with large transfers and more than one urb in flight. This patch adds a special case to the driver. Signed-off-by: Oliver Neukum <oliver@neukum.name> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/class/cdc-acm.h')
-rw-r--r--drivers/usb/class/cdc-acm.h16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h
index fd2aaccdcbac..1bcaea32cfc1 100644
--- a/drivers/usb/class/cdc-acm.h
+++ b/drivers/usb/class/cdc-acm.h
@@ -56,11 +56,11 @@
56 * in line disciplines. They ask for empty space amount, receive our URB size, 56 * in line disciplines. They ask for empty space amount, receive our URB size,
57 * and proceed to issue several 1-character writes, assuming they will fit. 57 * and proceed to issue several 1-character writes, assuming they will fit.
58 * The very first write takes a complete URB. Fortunately, this only happens 58 * The very first write takes a complete URB. Fortunately, this only happens
59 * when processing onlcr, so we only need 2 buffers. 59 * when processing onlcr, so we only need 2 buffers. These values must be
60 * powers of 2.
60 */ 61 */
61#define ACM_NWB 2 62#define ACM_NW 2
62#define ACM_NRU 16 63#define ACM_NR 16
63#define ACM_NRB 16
64 64
65struct acm_wb { 65struct acm_wb {
66 unsigned char *buf; 66 unsigned char *buf;
@@ -91,9 +91,10 @@ struct acm {
91 struct urb *ctrlurb, *writeurb; /* urbs */ 91 struct urb *ctrlurb, *writeurb; /* urbs */
92 u8 *ctrl_buffer; /* buffers of urbs */ 92 u8 *ctrl_buffer; /* buffers of urbs */
93 dma_addr_t ctrl_dma; /* dma handles of buffers */ 93 dma_addr_t ctrl_dma; /* dma handles of buffers */
94 struct acm_wb wb[ACM_NWB]; 94 struct acm_wb wb[ACM_NW];
95 struct acm_ru ru[ACM_NRU]; 95 struct acm_ru ru[ACM_NR];
96 struct acm_rb rb[ACM_NRB]; 96 struct acm_rb rb[ACM_NR];
97 int rx_buflimit;
97 int rx_endpoint; 98 int rx_endpoint;
98 spinlock_t read_lock; 99 spinlock_t read_lock;
99 struct list_head spare_read_urbs; 100 struct list_head spare_read_urbs;
@@ -122,3 +123,4 @@ struct acm {
122 123
123/* constants describing various quirks and errors */ 124/* constants describing various quirks and errors */
124#define NO_UNION_NORMAL 1 125#define NO_UNION_NORMAL 1
126#define SINGLE_RX_URB 2