Skip to content

Commit 754640d

Browse files
committed
USB: serial: kobil_sct: add control request helpers
Refactor by adding two control request helpers to make the code more readable. Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Johan Hovold <johan@kernel.org>
1 parent e41de61 commit 754640d

1 file changed

Lines changed: 27 additions & 81 deletions

File tree

drivers/usb/serial/kobil_sct.c

Lines changed: 27 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,21 @@ struct kobil_private {
109109
__u16 device_type;
110110
};
111111

112+
static int kobil_ctrl_send(struct usb_serial_port *port, u8 req, u16 val)
113+
{
114+
return usb_control_msg(port->serial->dev,
115+
usb_sndctrlpipe(port->serial->dev, 0),
116+
req, USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
117+
val, 0, NULL, 0, KOBIL_TIMEOUT);
118+
}
119+
120+
static int kobil_ctrl_recv(struct usb_serial_port *port, u8 req, u16 val, void *buf, u16 size)
121+
{
122+
return usb_control_msg(port->serial->dev,
123+
usb_rcvctrlpipe(port->serial->dev, 0),
124+
req, USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN,
125+
val, 0, buf, size, KOBIL_TIMEOUT);
126+
}
112127

113128
static int kobil_port_probe(struct usb_serial_port *port)
114129
{
@@ -176,33 +191,17 @@ static int kobil_open(struct tty_struct *tty, struct usb_serial_port *port)
176191
return -ENOMEM;
177192

178193
/* get hardware version */
179-
result = usb_control_msg(port->serial->dev,
180-
usb_rcvctrlpipe(port->serial->dev, 0),
181-
SUSBCRequest_GetMisc,
182-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN,
183-
SUSBCR_MSC_GetHWVersion,
184-
0,
185-
transfer_buffer,
186-
transfer_buffer_length,
187-
KOBIL_TIMEOUT
188-
);
194+
result = kobil_ctrl_recv(port, SUSBCRequest_GetMisc, SUSBCR_MSC_GetHWVersion,
195+
transfer_buffer, transfer_buffer_length);
189196
dev_dbg(dev, "%s - Send get_HW_version URB returns: %i\n", __func__, result);
190197
if (result >= 3) {
191198
dev_dbg(dev, "Hardware version: %i.%i.%i\n", transfer_buffer[0],
192199
transfer_buffer[1], transfer_buffer[2]);
193200
}
194201

195202
/* get firmware version */
196-
result = usb_control_msg(port->serial->dev,
197-
usb_rcvctrlpipe(port->serial->dev, 0),
198-
SUSBCRequest_GetMisc,
199-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN,
200-
SUSBCR_MSC_GetFWVersion,
201-
0,
202-
transfer_buffer,
203-
transfer_buffer_length,
204-
KOBIL_TIMEOUT
205-
);
203+
result = kobil_ctrl_recv(port, SUSBCRequest_GetMisc, SUSBCR_MSC_GetFWVersion,
204+
transfer_buffer, transfer_buffer_length);
206205
dev_dbg(dev, "%s - Send get_FW_version URB returns: %i\n", __func__, result);
207206
if (result >= 3) {
208207
dev_dbg(dev, "Firmware version: %i.%i.%i\n", transfer_buffer[0],
@@ -212,30 +211,12 @@ static int kobil_open(struct tty_struct *tty, struct usb_serial_port *port)
212211
if (priv->device_type == KOBIL_ADAPTER_B_PRODUCT_ID ||
213212
priv->device_type == KOBIL_ADAPTER_K_PRODUCT_ID) {
214213
/* Setting Baudrate, Parity and Stopbits */
215-
result = usb_control_msg(port->serial->dev,
216-
usb_sndctrlpipe(port->serial->dev, 0),
217-
SUSBCRequest_SetBaudRateParityAndStopBits,
218-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
219-
SUSBCR_SBR_9600 | SUSBCR_SPASB_EvenParity |
220-
SUSBCR_SPASB_1StopBit,
221-
0,
222-
NULL,
223-
0,
224-
KOBIL_TIMEOUT
225-
);
214+
result = kobil_ctrl_send(port, SUSBCRequest_SetBaudRateParityAndStopBits,
215+
SUSBCR_SBR_9600 | SUSBCR_SPASB_EvenParity | SUSBCR_SPASB_1StopBit);
226216
dev_dbg(dev, "%s - Send set_baudrate URB returns: %i\n", __func__, result);
227217

228218
/* reset all queues */
229-
result = usb_control_msg(port->serial->dev,
230-
usb_sndctrlpipe(port->serial->dev, 0),
231-
SUSBCRequest_Misc,
232-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
233-
SUSBCR_MSC_ResetAllQueues,
234-
0,
235-
NULL,
236-
0,
237-
KOBIL_TIMEOUT
238-
);
219+
result = kobil_ctrl_send(port, SUSBCRequest_Misc, SUSBCR_MSC_ResetAllQueues);
239220
dev_dbg(dev, "%s - Send reset_all_queues URB returns: %i\n", __func__, result);
240221
}
241222
if (priv->device_type == KOBIL_USBTWIN_PRODUCT_ID ||
@@ -385,16 +366,8 @@ static int kobil_tiocmget(struct tty_struct *tty)
385366
if (!transfer_buffer)
386367
return -ENOMEM;
387368

388-
result = usb_control_msg(port->serial->dev,
389-
usb_rcvctrlpipe(port->serial->dev, 0),
390-
SUSBCRequest_GetStatusLineState,
391-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN,
392-
0,
393-
0,
394-
transfer_buffer,
395-
transfer_buffer_length,
396-
KOBIL_TIMEOUT);
397-
369+
result = kobil_ctrl_recv(port, SUSBCRequest_GetStatusLineState, 0,
370+
transfer_buffer, transfer_buffer_length);
398371
dev_dbg(&port->dev, "Send get_status_line_state URB returns: %i\n",
399372
result);
400373
if (result < 1) {
@@ -446,15 +419,7 @@ static int kobil_tiocmset(struct tty_struct *tty,
446419
}
447420

448421
if (val) {
449-
result = usb_control_msg(port->serial->dev,
450-
usb_sndctrlpipe(port->serial->dev, 0),
451-
SUSBCRequest_SetStatusLinesOrQueues,
452-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
453-
val,
454-
0,
455-
NULL,
456-
0,
457-
KOBIL_TIMEOUT);
422+
result = kobil_ctrl_send(port, SUSBCRequest_SetStatusLinesOrQueues, val);
458423
if (result < 0) {
459424
dev_err(dev, "failed to set status lines: %d\n", result);
460425
return result;
@@ -506,16 +471,7 @@ static void kobil_set_termios(struct tty_struct *tty,
506471
tty->termios.c_cflag &= ~CMSPAR;
507472
tty_encode_baud_rate(tty, speed, speed);
508473

509-
result = usb_control_msg(port->serial->dev,
510-
usb_sndctrlpipe(port->serial->dev, 0),
511-
SUSBCRequest_SetBaudRateParityAndStopBits,
512-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
513-
urb_val,
514-
0,
515-
NULL,
516-
0,
517-
KOBIL_TIMEOUT
518-
);
474+
result = kobil_ctrl_send(port, SUSBCRequest_SetBaudRateParityAndStopBits, urb_val);
519475
if (result) {
520476
dev_err(&port->dev, "failed to update line settings: %d\n",
521477
result);
@@ -536,17 +492,7 @@ static int kobil_ioctl(struct tty_struct *tty,
536492

537493
switch (cmd) {
538494
case TCFLSH:
539-
result = usb_control_msg(port->serial->dev,
540-
usb_sndctrlpipe(port->serial->dev, 0),
541-
SUSBCRequest_Misc,
542-
USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT,
543-
SUSBCR_MSC_ResetAllQueues,
544-
0,
545-
NULL,
546-
0,
547-
KOBIL_TIMEOUT
548-
);
549-
495+
result = kobil_ctrl_send(port, SUSBCRequest_Misc, SUSBCR_MSC_ResetAllQueues);
550496
dev_dbg(&port->dev,
551497
"%s - Send reset_all_queues (FLUSH) URB returns: %i\n",
552498
__func__, result);

0 commit comments

Comments
 (0)