diff options
Diffstat (limited to 'drivers/usb/serial/cyberjack.c')
-rw-r--r-- | drivers/usb/serial/cyberjack.c | 77 |
1 files changed, 36 insertions, 41 deletions
diff --git a/drivers/usb/serial/cyberjack.c b/drivers/usb/serial/cyberjack.c index 3aa0b530f68e..2a7aecc72237 100644 --- a/drivers/usb/serial/cyberjack.c +++ b/drivers/usb/serial/cyberjack.c | |||
@@ -43,8 +43,6 @@ | |||
43 | 43 | ||
44 | #define CYBERJACK_LOCAL_BUF_SIZE 32 | 44 | #define CYBERJACK_LOCAL_BUF_SIZE 32 |
45 | 45 | ||
46 | static bool debug; | ||
47 | |||
48 | /* | 46 | /* |
49 | * Version Information | 47 | * Version Information |
50 | */ | 48 | */ |
@@ -136,7 +134,8 @@ static int cyberjack_startup(struct usb_serial *serial) | |||
136 | if (result) | 134 | if (result) |
137 | dev_err(&serial->dev->dev, | 135 | dev_err(&serial->dev->dev, |
138 | "usb_submit_urb(read int) failed\n"); | 136 | "usb_submit_urb(read int) failed\n"); |
139 | dbg("%s - usb_submit_urb(int urb)", __func__); | 137 | dev_dbg(&serial->dev->dev, "%s - usb_submit_urb(int urb)\n", |
138 | __func__); | ||
140 | } | 139 | } |
141 | 140 | ||
142 | return 0; | 141 | return 0; |
@@ -167,7 +166,7 @@ static int cyberjack_open(struct tty_struct *tty, | |||
167 | unsigned long flags; | 166 | unsigned long flags; |
168 | int result = 0; | 167 | int result = 0; |
169 | 168 | ||
170 | dbg("%s - usb_clear_halt", __func__); | 169 | dev_dbg(&port->dev, "%s - usb_clear_halt\n", __func__); |
171 | usb_clear_halt(port->serial->dev, port->write_urb->pipe); | 170 | usb_clear_halt(port->serial->dev, port->write_urb->pipe); |
172 | 171 | ||
173 | priv = usb_get_serial_port_data(port); | 172 | priv = usb_get_serial_port_data(port); |
@@ -192,18 +191,19 @@ static void cyberjack_close(struct usb_serial_port *port) | |||
192 | static int cyberjack_write(struct tty_struct *tty, | 191 | static int cyberjack_write(struct tty_struct *tty, |
193 | struct usb_serial_port *port, const unsigned char *buf, int count) | 192 | struct usb_serial_port *port, const unsigned char *buf, int count) |
194 | { | 193 | { |
194 | struct device *dev = &port->dev; | ||
195 | struct cyberjack_private *priv = usb_get_serial_port_data(port); | 195 | struct cyberjack_private *priv = usb_get_serial_port_data(port); |
196 | unsigned long flags; | 196 | unsigned long flags; |
197 | int result; | 197 | int result; |
198 | int wrexpected; | 198 | int wrexpected; |
199 | 199 | ||
200 | if (count == 0) { | 200 | if (count == 0) { |
201 | dbg("%s - write request of 0 bytes", __func__); | 201 | dev_dbg(dev, "%s - write request of 0 bytes\n", __func__); |
202 | return 0; | 202 | return 0; |
203 | } | 203 | } |
204 | 204 | ||
205 | if (!test_and_clear_bit(0, &port->write_urbs_free)) { | 205 | if (!test_and_clear_bit(0, &port->write_urbs_free)) { |
206 | dbg("%s - already writing", __func__); | 206 | dev_dbg(dev, "%s - already writing\n", __func__); |
207 | return 0; | 207 | return 0; |
208 | } | 208 | } |
209 | 209 | ||
@@ -220,13 +220,12 @@ static int cyberjack_write(struct tty_struct *tty, | |||
220 | /* Copy data */ | 220 | /* Copy data */ |
221 | memcpy(priv->wrbuf + priv->wrfilled, buf, count); | 221 | memcpy(priv->wrbuf + priv->wrfilled, buf, count); |
222 | 222 | ||
223 | usb_serial_debug_data(debug, &port->dev, __func__, count, | 223 | usb_serial_debug_data(dev, __func__, count, priv->wrbuf + priv->wrfilled); |
224 | priv->wrbuf + priv->wrfilled); | ||
225 | priv->wrfilled += count; | 224 | priv->wrfilled += count; |
226 | 225 | ||
227 | if (priv->wrfilled >= 3) { | 226 | if (priv->wrfilled >= 3) { |
228 | wrexpected = ((int)priv->wrbuf[2]<<8)+priv->wrbuf[1]+3; | 227 | wrexpected = ((int)priv->wrbuf[2]<<8)+priv->wrbuf[1]+3; |
229 | dbg("%s - expected data: %d", __func__, wrexpected); | 228 | dev_dbg(dev, "%s - expected data: %d\n", __func__, wrexpected); |
230 | } else | 229 | } else |
231 | wrexpected = sizeof(priv->wrbuf); | 230 | wrexpected = sizeof(priv->wrbuf); |
232 | 231 | ||
@@ -234,7 +233,7 @@ static int cyberjack_write(struct tty_struct *tty, | |||
234 | /* We have enough data to begin transmission */ | 233 | /* We have enough data to begin transmission */ |
235 | int length; | 234 | int length; |
236 | 235 | ||
237 | dbg("%s - transmitting data (frame 1)", __func__); | 236 | dev_dbg(dev, "%s - transmitting data (frame 1)\n", __func__); |
238 | length = (wrexpected > port->bulk_out_size) ? | 237 | length = (wrexpected > port->bulk_out_size) ? |
239 | port->bulk_out_size : wrexpected; | 238 | port->bulk_out_size : wrexpected; |
240 | 239 | ||
@@ -258,11 +257,11 @@ static int cyberjack_write(struct tty_struct *tty, | |||
258 | return 0; | 257 | return 0; |
259 | } | 258 | } |
260 | 259 | ||
261 | dbg("%s - priv->wrsent=%d", __func__, priv->wrsent); | 260 | dev_dbg(dev, "%s - priv->wrsent=%d\n", __func__, priv->wrsent); |
262 | dbg("%s - priv->wrfilled=%d", __func__, priv->wrfilled); | 261 | dev_dbg(dev, "%s - priv->wrfilled=%d\n", __func__, priv->wrfilled); |
263 | 262 | ||
264 | if (priv->wrsent >= priv->wrfilled) { | 263 | if (priv->wrsent >= priv->wrfilled) { |
265 | dbg("%s - buffer cleaned", __func__); | 264 | dev_dbg(dev, "%s - buffer cleaned\n", __func__); |
266 | memset(priv->wrbuf, 0, sizeof(priv->wrbuf)); | 265 | memset(priv->wrbuf, 0, sizeof(priv->wrbuf)); |
267 | priv->wrfilled = 0; | 266 | priv->wrfilled = 0; |
268 | priv->wrsent = 0; | 267 | priv->wrsent = 0; |
@@ -284,6 +283,7 @@ static void cyberjack_read_int_callback(struct urb *urb) | |||
284 | { | 283 | { |
285 | struct usb_serial_port *port = urb->context; | 284 | struct usb_serial_port *port = urb->context; |
286 | struct cyberjack_private *priv = usb_get_serial_port_data(port); | 285 | struct cyberjack_private *priv = usb_get_serial_port_data(port); |
286 | struct device *dev = &port->dev; | ||
287 | unsigned char *data = urb->transfer_buffer; | 287 | unsigned char *data = urb->transfer_buffer; |
288 | int status = urb->status; | 288 | int status = urb->status; |
289 | int result; | 289 | int result; |
@@ -292,8 +292,7 @@ static void cyberjack_read_int_callback(struct urb *urb) | |||
292 | if (status) | 292 | if (status) |
293 | return; | 293 | return; |
294 | 294 | ||
295 | usb_serial_debug_data(debug, &port->dev, __func__, | 295 | usb_serial_debug_data(dev, __func__, urb->actual_length, data); |
296 | urb->actual_length, data); | ||
297 | 296 | ||
298 | /* React only to interrupts signaling a bulk_in transfer */ | 297 | /* React only to interrupts signaling a bulk_in transfer */ |
299 | if (urb->actual_length == 4 && data[0] == 0x01) { | 298 | if (urb->actual_length == 4 && data[0] == 0x01) { |
@@ -307,7 +306,7 @@ static void cyberjack_read_int_callback(struct urb *urb) | |||
307 | old_rdtodo = priv->rdtodo; | 306 | old_rdtodo = priv->rdtodo; |
308 | 307 | ||
309 | if (old_rdtodo + size < old_rdtodo) { | 308 | if (old_rdtodo + size < old_rdtodo) { |
310 | dbg("To many bulk_in urbs to do."); | 309 | dev_dbg(dev, "To many bulk_in urbs to do.\n"); |
311 | spin_unlock(&priv->lock); | 310 | spin_unlock(&priv->lock); |
312 | goto resubmit; | 311 | goto resubmit; |
313 | } | 312 | } |
@@ -315,17 +314,16 @@ static void cyberjack_read_int_callback(struct urb *urb) | |||
315 | /* "+=" is probably more fault tollerant than "=" */ | 314 | /* "+=" is probably more fault tollerant than "=" */ |
316 | priv->rdtodo += size; | 315 | priv->rdtodo += size; |
317 | 316 | ||
318 | dbg("%s - rdtodo: %d", __func__, priv->rdtodo); | 317 | dev_dbg(dev, "%s - rdtodo: %d\n", __func__, priv->rdtodo); |
319 | 318 | ||
320 | spin_unlock(&priv->lock); | 319 | spin_unlock(&priv->lock); |
321 | 320 | ||
322 | if (!old_rdtodo) { | 321 | if (!old_rdtodo) { |
323 | result = usb_submit_urb(port->read_urb, GFP_ATOMIC); | 322 | result = usb_submit_urb(port->read_urb, GFP_ATOMIC); |
324 | if (result) | 323 | if (result) |
325 | dev_err(&port->dev, "%s - failed resubmitting " | 324 | dev_err(dev, "%s - failed resubmitting read urb, error %d\n", |
326 | "read urb, error %d\n", | ||
327 | __func__, result); | 325 | __func__, result); |
328 | dbg("%s - usb_submit_urb(read urb)", __func__); | 326 | dev_dbg(dev, "%s - usb_submit_urb(read urb)\n", __func__); |
329 | } | 327 | } |
330 | } | 328 | } |
331 | 329 | ||
@@ -333,30 +331,30 @@ resubmit: | |||
333 | result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC); | 331 | result = usb_submit_urb(port->interrupt_in_urb, GFP_ATOMIC); |
334 | if (result) | 332 | if (result) |
335 | dev_err(&port->dev, "usb_submit_urb(read int) failed\n"); | 333 | dev_err(&port->dev, "usb_submit_urb(read int) failed\n"); |
336 | dbg("%s - usb_submit_urb(int urb)", __func__); | 334 | dev_dbg(dev, "%s - usb_submit_urb(int urb)\n", __func__); |
337 | } | 335 | } |
338 | 336 | ||
339 | static void cyberjack_read_bulk_callback(struct urb *urb) | 337 | static void cyberjack_read_bulk_callback(struct urb *urb) |
340 | { | 338 | { |
341 | struct usb_serial_port *port = urb->context; | 339 | struct usb_serial_port *port = urb->context; |
342 | struct cyberjack_private *priv = usb_get_serial_port_data(port); | 340 | struct cyberjack_private *priv = usb_get_serial_port_data(port); |
341 | struct device *dev = &port->dev; | ||
343 | struct tty_struct *tty; | 342 | struct tty_struct *tty; |
344 | unsigned char *data = urb->transfer_buffer; | 343 | unsigned char *data = urb->transfer_buffer; |
345 | short todo; | 344 | short todo; |
346 | int result; | 345 | int result; |
347 | int status = urb->status; | 346 | int status = urb->status; |
348 | 347 | ||
349 | usb_serial_debug_data(debug, &port->dev, __func__, | 348 | usb_serial_debug_data(dev, __func__, urb->actual_length, data); |
350 | urb->actual_length, data); | ||
351 | if (status) { | 349 | if (status) { |
352 | dbg("%s - nonzero read bulk status received: %d", | 350 | dev_dbg(dev, "%s - nonzero read bulk status received: %d\n", |
353 | __func__, status); | 351 | __func__, status); |
354 | return; | 352 | return; |
355 | } | 353 | } |
356 | 354 | ||
357 | tty = tty_port_tty_get(&port->port); | 355 | tty = tty_port_tty_get(&port->port); |
358 | if (!tty) { | 356 | if (!tty) { |
359 | dbg("%s - ignoring since device not open", __func__); | 357 | dev_dbg(dev, "%s - ignoring since device not open\n", __func__); |
360 | return; | 358 | return; |
361 | } | 359 | } |
362 | if (urb->actual_length) { | 360 | if (urb->actual_length) { |
@@ -376,15 +374,15 @@ static void cyberjack_read_bulk_callback(struct urb *urb) | |||
376 | 374 | ||
377 | spin_unlock(&priv->lock); | 375 | spin_unlock(&priv->lock); |
378 | 376 | ||
379 | dbg("%s - rdtodo: %d", __func__, todo); | 377 | dev_dbg(dev, "%s - rdtodo: %d\n", __func__, todo); |
380 | 378 | ||
381 | /* Continue to read if we have still urbs to do. */ | 379 | /* Continue to read if we have still urbs to do. */ |
382 | if (todo /* || (urb->actual_length==port->bulk_in_endpointAddress)*/) { | 380 | if (todo /* || (urb->actual_length==port->bulk_in_endpointAddress)*/) { |
383 | result = usb_submit_urb(port->read_urb, GFP_ATOMIC); | 381 | result = usb_submit_urb(port->read_urb, GFP_ATOMIC); |
384 | if (result) | 382 | if (result) |
385 | dev_err(&port->dev, "%s - failed resubmitting read " | 383 | dev_err(dev, "%s - failed resubmitting read urb, error %d\n", |
386 | "urb, error %d\n", __func__, result); | 384 | __func__, result); |
387 | dbg("%s - usb_submit_urb(read urb)", __func__); | 385 | dev_dbg(dev, "%s - usb_submit_urb(read urb)\n", __func__); |
388 | } | 386 | } |
389 | } | 387 | } |
390 | 388 | ||
@@ -392,12 +390,13 @@ static void cyberjack_write_bulk_callback(struct urb *urb) | |||
392 | { | 390 | { |
393 | struct usb_serial_port *port = urb->context; | 391 | struct usb_serial_port *port = urb->context; |
394 | struct cyberjack_private *priv = usb_get_serial_port_data(port); | 392 | struct cyberjack_private *priv = usb_get_serial_port_data(port); |
393 | struct device *dev = &port->dev; | ||
395 | int status = urb->status; | 394 | int status = urb->status; |
396 | 395 | ||
397 | set_bit(0, &port->write_urbs_free); | 396 | set_bit(0, &port->write_urbs_free); |
398 | if (status) { | 397 | if (status) { |
399 | dbg("%s - nonzero write bulk status received: %d", | 398 | dev_dbg(dev, "%s - nonzero write bulk status received: %d\n", |
400 | __func__, status); | 399 | __func__, status); |
401 | return; | 400 | return; |
402 | } | 401 | } |
403 | 402 | ||
@@ -407,7 +406,7 @@ static void cyberjack_write_bulk_callback(struct urb *urb) | |||
407 | if (priv->wrfilled) { | 406 | if (priv->wrfilled) { |
408 | int length, blksize, result; | 407 | int length, blksize, result; |
409 | 408 | ||
410 | dbg("%s - transmitting data (frame n)", __func__); | 409 | dev_dbg(dev, "%s - transmitting data (frame n)\n", __func__); |
411 | 410 | ||
412 | length = ((priv->wrfilled - priv->wrsent) > port->bulk_out_size) ? | 411 | length = ((priv->wrfilled - priv->wrsent) > port->bulk_out_size) ? |
413 | port->bulk_out_size : (priv->wrfilled - priv->wrsent); | 412 | port->bulk_out_size : (priv->wrfilled - priv->wrsent); |
@@ -422,8 +421,7 @@ static void cyberjack_write_bulk_callback(struct urb *urb) | |||
422 | /* send the data out the bulk port */ | 421 | /* send the data out the bulk port */ |
423 | result = usb_submit_urb(port->write_urb, GFP_ATOMIC); | 422 | result = usb_submit_urb(port->write_urb, GFP_ATOMIC); |
424 | if (result) { | 423 | if (result) { |
425 | dev_err(&port->dev, | 424 | dev_err(dev, "%s - failed submitting write urb, error %d\n", |
426 | "%s - failed submitting write urb, error %d\n", | ||
427 | __func__, result); | 425 | __func__, result); |
428 | /* Throw away data. No better idea what to do with it. */ | 426 | /* Throw away data. No better idea what to do with it. */ |
429 | priv->wrfilled = 0; | 427 | priv->wrfilled = 0; |
@@ -431,14 +429,14 @@ static void cyberjack_write_bulk_callback(struct urb *urb) | |||
431 | goto exit; | 429 | goto exit; |
432 | } | 430 | } |
433 | 431 | ||
434 | dbg("%s - priv->wrsent=%d", __func__, priv->wrsent); | 432 | dev_dbg(dev, "%s - priv->wrsent=%d\n", __func__, priv->wrsent); |
435 | dbg("%s - priv->wrfilled=%d", __func__, priv->wrfilled); | 433 | dev_dbg(dev, "%s - priv->wrfilled=%d\n", __func__, priv->wrfilled); |
436 | 434 | ||
437 | blksize = ((int)priv->wrbuf[2]<<8)+priv->wrbuf[1]+3; | 435 | blksize = ((int)priv->wrbuf[2]<<8)+priv->wrbuf[1]+3; |
438 | 436 | ||
439 | if (priv->wrsent >= priv->wrfilled || | 437 | if (priv->wrsent >= priv->wrfilled || |
440 | priv->wrsent >= blksize) { | 438 | priv->wrsent >= blksize) { |
441 | dbg("%s - buffer cleaned", __func__); | 439 | dev_dbg(dev, "%s - buffer cleaned\n", __func__); |
442 | memset(priv->wrbuf, 0, sizeof(priv->wrbuf)); | 440 | memset(priv->wrbuf, 0, sizeof(priv->wrbuf)); |
443 | priv->wrfilled = 0; | 441 | priv->wrfilled = 0; |
444 | priv->wrsent = 0; | 442 | priv->wrsent = 0; |
@@ -456,6 +454,3 @@ MODULE_AUTHOR(DRIVER_AUTHOR); | |||
456 | MODULE_DESCRIPTION(DRIVER_DESC); | 454 | MODULE_DESCRIPTION(DRIVER_DESC); |
457 | MODULE_VERSION(DRIVER_VERSION); | 455 | MODULE_VERSION(DRIVER_VERSION); |
458 | MODULE_LICENSE("GPL"); | 456 | MODULE_LICENSE("GPL"); |
459 | |||
460 | module_param(debug, bool, S_IRUGO | S_IWUSR); | ||
461 | MODULE_PARM_DESC(debug, "Debug enabled or not"); | ||