aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/serial/ir-usb.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/serial/ir-usb.c')
-rw-r--r--drivers/usb/serial/ir-usb.c72
1 files changed, 31 insertions, 41 deletions
diff --git a/drivers/usb/serial/ir-usb.c b/drivers/usb/serial/ir-usb.c
index 84965cd65c7..fc09414c960 100644
--- a/drivers/usb/serial/ir-usb.c
+++ b/drivers/usb/serial/ir-usb.c
@@ -77,13 +77,6 @@ static const struct usb_device_id ir_id_table[] = {
77 77
78MODULE_DEVICE_TABLE(usb, ir_id_table); 78MODULE_DEVICE_TABLE(usb, ir_id_table);
79 79
80static struct usb_driver ir_driver = {
81 .name = "ir-usb",
82 .probe = usb_serial_probe,
83 .disconnect = usb_serial_disconnect,
84 .id_table = ir_id_table,
85};
86
87static struct usb_serial_driver ir_device = { 80static struct usb_serial_driver ir_device = {
88 .driver = { 81 .driver = {
89 .owner = THIS_MODULE, 82 .owner = THIS_MODULE,
@@ -103,18 +96,21 @@ static struct usb_serial_driver * const serial_drivers[] = {
103 &ir_device, NULL 96 &ir_device, NULL
104}; 97};
105 98
106static inline void irda_usb_dump_class_desc(struct usb_irda_cs_descriptor *desc) 99static inline void irda_usb_dump_class_desc(struct usb_serial *serial,
100 struct usb_irda_cs_descriptor *desc)
107{ 101{
108 dbg("bLength=%x", desc->bLength); 102 struct device *dev = &serial->dev->dev;
109 dbg("bDescriptorType=%x", desc->bDescriptorType); 103
110 dbg("bcdSpecRevision=%x", __le16_to_cpu(desc->bcdSpecRevision)); 104 dev_dbg(dev, "bLength=%x\n", desc->bLength);
111 dbg("bmDataSize=%x", desc->bmDataSize); 105 dev_dbg(dev, "bDescriptorType=%x\n", desc->bDescriptorType);
112 dbg("bmWindowSize=%x", desc->bmWindowSize); 106 dev_dbg(dev, "bcdSpecRevision=%x\n", __le16_to_cpu(desc->bcdSpecRevision));
113 dbg("bmMinTurnaroundTime=%d", desc->bmMinTurnaroundTime); 107 dev_dbg(dev, "bmDataSize=%x\n", desc->bmDataSize);
114 dbg("wBaudRate=%x", __le16_to_cpu(desc->wBaudRate)); 108 dev_dbg(dev, "bmWindowSize=%x\n", desc->bmWindowSize);
115 dbg("bmAdditionalBOFs=%x", desc->bmAdditionalBOFs); 109 dev_dbg(dev, "bmMinTurnaroundTime=%d\n", desc->bmMinTurnaroundTime);
116 dbg("bIrdaRateSniff=%x", desc->bIrdaRateSniff); 110 dev_dbg(dev, "wBaudRate=%x\n", __le16_to_cpu(desc->wBaudRate));
117 dbg("bMaxUnicastList=%x", desc->bMaxUnicastList); 111 dev_dbg(dev, "bmAdditionalBOFs=%x\n", desc->bmAdditionalBOFs);
112 dev_dbg(dev, "bIrdaRateSniff=%x\n", desc->bIrdaRateSniff);
113 dev_dbg(dev, "bMaxUnicastList=%x\n", desc->bMaxUnicastList);
118} 114}
119 115
120/*------------------------------------------------------------------*/ 116/*------------------------------------------------------------------*/
@@ -130,8 +126,9 @@ static inline void irda_usb_dump_class_desc(struct usb_irda_cs_descriptor *desc)
130 * Based on the same function in drivers/net/irda/irda-usb.c 126 * Based on the same function in drivers/net/irda/irda-usb.c
131 */ 127 */
132static struct usb_irda_cs_descriptor * 128static struct usb_irda_cs_descriptor *
133irda_usb_find_class_desc(struct usb_device *dev, unsigned int ifnum) 129irda_usb_find_class_desc(struct usb_serial *serial, unsigned int ifnum)
134{ 130{
131 struct usb_device *dev = serial->dev;
135 struct usb_irda_cs_descriptor *desc; 132 struct usb_irda_cs_descriptor *desc;
136 int ret; 133 int ret;
137 134
@@ -144,20 +141,20 @@ irda_usb_find_class_desc(struct usb_device *dev, unsigned int ifnum)
144 USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE, 141 USB_DIR_IN | USB_TYPE_CLASS | USB_RECIP_INTERFACE,
145 0, ifnum, desc, sizeof(*desc), 1000); 142 0, ifnum, desc, sizeof(*desc), 1000);
146 143
147 dbg("%s - ret=%d", __func__, ret); 144 dev_dbg(&serial->dev->dev, "%s - ret=%d\n", __func__, ret);
148 if (ret < sizeof(*desc)) { 145 if (ret < sizeof(*desc)) {
149 dbg("%s - class descriptor read %s (%d)", 146 dev_dbg(&serial->dev->dev,
150 __func__, 147 "%s - class descriptor read %s (%d)\n", __func__,
151 (ret < 0) ? "failed" : "too short", 148 (ret < 0) ? "failed" : "too short", ret);
152 ret);
153 goto error; 149 goto error;
154 } 150 }
155 if (desc->bDescriptorType != USB_DT_CS_IRDA) { 151 if (desc->bDescriptorType != USB_DT_CS_IRDA) {
156 dbg("%s - bad class descriptor type", __func__); 152 dev_dbg(&serial->dev->dev, "%s - bad class descriptor type\n",
153 __func__);
157 goto error; 154 goto error;
158 } 155 }
159 156
160 irda_usb_dump_class_desc(desc); 157 irda_usb_dump_class_desc(serial, desc);
161 return desc; 158 return desc;
162 159
163error: 160error:
@@ -207,14 +204,15 @@ static int ir_startup(struct usb_serial *serial)
207{ 204{
208 struct usb_irda_cs_descriptor *irda_desc; 205 struct usb_irda_cs_descriptor *irda_desc;
209 206
210 irda_desc = irda_usb_find_class_desc(serial->dev, 0); 207 irda_desc = irda_usb_find_class_desc(serial, 0);
211 if (!irda_desc) { 208 if (!irda_desc) {
212 dev_err(&serial->dev->dev, 209 dev_err(&serial->dev->dev,
213 "IRDA class descriptor not found, device not bound\n"); 210 "IRDA class descriptor not found, device not bound\n");
214 return -ENODEV; 211 return -ENODEV;
215 } 212 }
216 213
217 dbg("%s - Baud rates supported:%s%s%s%s%s%s%s%s%s", 214 dev_dbg(&serial->dev->dev,
215 "%s - Baud rates supported:%s%s%s%s%s%s%s%s%s\n",
218 __func__, 216 __func__,
219 (irda_desc->wBaudRate & USB_IRDA_BR_2400) ? " 2400" : "", 217 (irda_desc->wBaudRate & USB_IRDA_BR_2400) ? " 2400" : "",
220 (irda_desc->wBaudRate & USB_IRDA_BR_9600) ? " 9600" : "", 218 (irda_desc->wBaudRate & USB_IRDA_BR_9600) ? " 9600" : "",
@@ -264,8 +262,6 @@ static int ir_open(struct tty_struct *tty, struct usb_serial_port *port)
264{ 262{
265 int i; 263 int i;
266 264
267 dbg("%s - port %d", __func__, port->number);
268
269 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i) 265 for (i = 0; i < ARRAY_SIZE(port->write_urbs); ++i)
270 port->write_urbs[i]->transfer_flags = URB_ZERO_PACKET; 266 port->write_urbs[i]->transfer_flags = URB_ZERO_PACKET;
271 267
@@ -322,15 +318,11 @@ static void ir_process_read_urb(struct urb *urb)
322 318
323static void ir_set_termios_callback(struct urb *urb) 319static void ir_set_termios_callback(struct urb *urb)
324{ 320{
325 struct usb_serial_port *port = urb->context;
326 int status = urb->status;
327
328 dbg("%s - port %d", __func__, port->number);
329
330 kfree(urb->transfer_buffer); 321 kfree(urb->transfer_buffer);
331 322
332 if (status) 323 if (urb->status)
333 dbg("%s - non-zero urb status: %d", __func__, status); 324 dev_dbg(&urb->dev->dev, "%s - non-zero urb status: %d\n",
325 __func__, urb->status);
334} 326}
335 327
336static void ir_set_termios(struct tty_struct *tty, 328static void ir_set_termios(struct tty_struct *tty,
@@ -342,8 +334,6 @@ static void ir_set_termios(struct tty_struct *tty,
342 speed_t baud; 334 speed_t baud;
343 int ir_baud; 335 int ir_baud;
344 336
345 dbg("%s - port %d", __func__, port->number);
346
347 baud = tty_get_baud_rate(tty); 337 baud = tty_get_baud_rate(tty);
348 338
349 /* 339 /*
@@ -447,7 +437,7 @@ static int __init ir_init(void)
447 ir_device.bulk_out_size = buffer_size; 437 ir_device.bulk_out_size = buffer_size;
448 } 438 }
449 439
450 retval = usb_serial_register_drivers(&ir_driver, serial_drivers); 440 retval = usb_serial_register_drivers(serial_drivers, KBUILD_MODNAME, ir_id_table);
451 if (retval == 0) 441 if (retval == 0)
452 printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":" 442 printk(KERN_INFO KBUILD_MODNAME ": " DRIVER_VERSION ":"
453 DRIVER_DESC "\n"); 443 DRIVER_DESC "\n");
@@ -456,7 +446,7 @@ static int __init ir_init(void)
456 446
457static void __exit ir_exit(void) 447static void __exit ir_exit(void)
458{ 448{
459 usb_serial_deregister_drivers(&ir_driver, serial_drivers); 449 usb_serial_deregister_drivers(serial_drivers);
460} 450}
461 451
462 452