aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/serial/ssu100.c')
-rw-r--r--drivers/usb/serial/ssu100.c31
1 files changed, 24 insertions, 7 deletions
diff --git a/drivers/usb/serial/ssu100.c b/drivers/usb/serial/ssu100.c
index 70a098de429f..886e1294b120 100644
--- a/drivers/usb/serial/ssu100.c
+++ b/drivers/usb/serial/ssu100.c
@@ -80,9 +80,17 @@ static inline int ssu100_setdevice(struct usb_device *dev, u8 *data)
80 80
81static inline int ssu100_getdevice(struct usb_device *dev, u8 *data) 81static inline int ssu100_getdevice(struct usb_device *dev, u8 *data)
82{ 82{
83 return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 83 int ret;
84 QT_SET_GET_DEVICE, 0xc0, 0, 0, 84
85 data, 3, 300); 85 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
86 QT_SET_GET_DEVICE, 0xc0, 0, 0,
87 data, 3, 300);
88 if (ret < 3) {
89 if (ret >= 0)
90 ret = -EIO;
91 }
92
93 return ret;
86} 94}
87 95
88static inline int ssu100_getregister(struct usb_device *dev, 96static inline int ssu100_getregister(struct usb_device *dev,
@@ -90,10 +98,17 @@ static inline int ssu100_getregister(struct usb_device *dev,
90 unsigned short reg, 98 unsigned short reg,
91 u8 *data) 99 u8 *data)
92{ 100{
93 return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 101 int ret;
94 QT_SET_GET_REGISTER, 0xc0, reg, 102
95 uart, data, sizeof(*data), 300); 103 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
104 QT_SET_GET_REGISTER, 0xc0, reg,
105 uart, data, sizeof(*data), 300);
106 if (ret < sizeof(*data)) {
107 if (ret >= 0)
108 ret = -EIO;
109 }
96 110
111 return ret;
97} 112}
98 113
99 114
@@ -289,8 +304,10 @@ static int ssu100_open(struct tty_struct *tty, struct usb_serial_port *port)
289 QT_OPEN_CLOSE_CHANNEL, 304 QT_OPEN_CLOSE_CHANNEL,
290 QT_TRANSFER_IN, 0x01, 305 QT_TRANSFER_IN, 0x01,
291 0, data, 2, 300); 306 0, data, 2, 300);
292 if (result < 0) { 307 if (result < 2) {
293 dev_dbg(&port->dev, "%s - open failed %i\n", __func__, result); 308 dev_dbg(&port->dev, "%s - open failed %i\n", __func__, result);
309 if (result >= 0)
310 result = -EIO;
294 kfree(data); 311 kfree(data);
295 return result; 312 return result;
296 } 313 }