diff options
Diffstat (limited to 'drivers/usb/serial/mos7840.c')
-rw-r--r-- | drivers/usb/serial/mos7840.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/drivers/usb/serial/mos7840.c b/drivers/usb/serial/mos7840.c index 2cfe2451ed97..2fda1c0182b7 100644 --- a/drivers/usb/serial/mos7840.c +++ b/drivers/usb/serial/mos7840.c | |||
@@ -181,7 +181,7 @@ | |||
181 | #define URB_TRANSFER_BUFFER_SIZE 32 /* URB Size */ | 181 | #define URB_TRANSFER_BUFFER_SIZE 32 /* URB Size */ |
182 | 182 | ||
183 | 183 | ||
184 | static struct usb_device_id moschip_port_id_table[] = { | 184 | static const struct usb_device_id moschip_port_id_table[] = { |
185 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)}, | 185 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)}, |
186 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, | 186 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, |
187 | {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)}, | 187 | {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)}, |
@@ -198,7 +198,7 @@ static struct usb_device_id moschip_port_id_table[] = { | |||
198 | {} /* terminating entry */ | 198 | {} /* terminating entry */ |
199 | }; | 199 | }; |
200 | 200 | ||
201 | static __devinitdata struct usb_device_id moschip_id_table_combined[] = { | 201 | static const struct usb_device_id moschip_id_table_combined[] __devinitconst = { |
202 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)}, | 202 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7840)}, |
203 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, | 203 | {USB_DEVICE(USB_VENDOR_ID_MOSCHIP, MOSCHIP_DEVICE_ID_7820)}, |
204 | {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)}, | 204 | {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USO9ML2_2)}, |
@@ -283,12 +283,19 @@ static int mos7840_get_reg_sync(struct usb_serial_port *port, __u16 reg, | |||
283 | { | 283 | { |
284 | struct usb_device *dev = port->serial->dev; | 284 | struct usb_device *dev = port->serial->dev; |
285 | int ret = 0; | 285 | int ret = 0; |
286 | u8 *buf; | ||
287 | |||
288 | buf = kmalloc(VENDOR_READ_LENGTH, GFP_KERNEL); | ||
289 | if (!buf) | ||
290 | return -ENOMEM; | ||
286 | 291 | ||
287 | ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ, | 292 | ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ, |
288 | MCS_RD_RTYPE, 0, reg, val, VENDOR_READ_LENGTH, | 293 | MCS_RD_RTYPE, 0, reg, buf, VENDOR_READ_LENGTH, |
289 | MOS_WDR_TIMEOUT); | 294 | MOS_WDR_TIMEOUT); |
295 | *val = buf[0]; | ||
290 | dbg("mos7840_get_reg_sync offset is %x, return val %x", reg, *val); | 296 | dbg("mos7840_get_reg_sync offset is %x, return val %x", reg, *val); |
291 | *val = (*val) & 0x00ff; | 297 | |
298 | kfree(buf); | ||
292 | return ret; | 299 | return ret; |
293 | } | 300 | } |
294 | 301 | ||
@@ -341,6 +348,11 @@ static int mos7840_get_uart_reg(struct usb_serial_port *port, __u16 reg, | |||
341 | struct usb_device *dev = port->serial->dev; | 348 | struct usb_device *dev = port->serial->dev; |
342 | int ret = 0; | 349 | int ret = 0; |
343 | __u16 Wval; | 350 | __u16 Wval; |
351 | u8 *buf; | ||
352 | |||
353 | buf = kmalloc(VENDOR_READ_LENGTH, GFP_KERNEL); | ||
354 | if (!buf) | ||
355 | return -ENOMEM; | ||
344 | 356 | ||
345 | /* dbg("application number is %4x", | 357 | /* dbg("application number is %4x", |
346 | (((__u16)port->number - (__u16)(port->serial->minor))+1)<<8); */ | 358 | (((__u16)port->number - (__u16)(port->serial->minor))+1)<<8); */ |
@@ -364,9 +376,11 @@ static int mos7840_get_uart_reg(struct usb_serial_port *port, __u16 reg, | |||
364 | } | 376 | } |
365 | } | 377 | } |
366 | ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ, | 378 | ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ, |
367 | MCS_RD_RTYPE, Wval, reg, val, VENDOR_READ_LENGTH, | 379 | MCS_RD_RTYPE, Wval, reg, buf, VENDOR_READ_LENGTH, |
368 | MOS_WDR_TIMEOUT); | 380 | MOS_WDR_TIMEOUT); |
369 | *val = (*val) & 0x00ff; | 381 | *val = buf[0]; |
382 | |||
383 | kfree(buf); | ||
370 | return ret; | 384 | return ret; |
371 | } | 385 | } |
372 | 386 | ||
@@ -750,7 +764,6 @@ static void mos7840_bulk_in_callback(struct urb *urb) | |||
750 | if (urb->actual_length) { | 764 | if (urb->actual_length) { |
751 | tty = tty_port_tty_get(&mos7840_port->port->port); | 765 | tty = tty_port_tty_get(&mos7840_port->port->port); |
752 | if (tty) { | 766 | if (tty) { |
753 | tty_buffer_request_room(tty, urb->actual_length); | ||
754 | tty_insert_flip_string(tty, data, urb->actual_length); | 767 | tty_insert_flip_string(tty, data, urb->actual_length); |
755 | dbg(" %s ", data); | 768 | dbg(" %s ", data); |
756 | tty_flip_buffer_push(tty); | 769 | tty_flip_buffer_push(tty); |