Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+27 -81
+27 -81
drivers/usb/serial/kobil_sct.c
··· 109 109 __u16 device_type; 110 110 }; 111 111 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 + } 112 127 113 128 static int kobil_port_probe(struct usb_serial_port *port) 114 129 { ··· 191 176 return -ENOMEM; 192 177 193 178 /* get hardware version */ 194 - result = usb_control_msg(port->serial->dev, 195 - usb_rcvctrlpipe(port->serial->dev, 0), 196 - SUSBCRequest_GetMisc, 197 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN, 198 - SUSBCR_MSC_GetHWVersion, 199 - 0, 200 - transfer_buffer, 201 - transfer_buffer_length, 202 - KOBIL_TIMEOUT 203 - ); 179 + result = kobil_ctrl_recv(port, SUSBCRequest_GetMisc, SUSBCR_MSC_GetHWVersion, 180 + transfer_buffer, transfer_buffer_length); 204 181 dev_dbg(dev, "%s - Send get_HW_version URB returns: %i\n", __func__, result); 205 182 if (result >= 3) { 206 183 dev_dbg(dev, "Hardware version: %i.%i.%i\n", transfer_buffer[0], ··· 200 193 } 201 194 202 195 /* get firmware version */ 203 - result = usb_control_msg(port->serial->dev, 204 - usb_rcvctrlpipe(port->serial->dev, 0), 205 - SUSBCRequest_GetMisc, 206 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN, 207 - SUSBCR_MSC_GetFWVersion, 208 - 0, 209 - transfer_buffer, 210 - transfer_buffer_length, 211 - KOBIL_TIMEOUT 212 - ); 196 + result = kobil_ctrl_recv(port, SUSBCRequest_GetMisc, SUSBCR_MSC_GetFWVersion, 197 + transfer_buffer, transfer_buffer_length); 213 198 dev_dbg(dev, "%s - Send get_FW_version URB returns: %i\n", __func__, result); 214 199 if (result >= 3) { 215 200 dev_dbg(dev, "Firmware version: %i.%i.%i\n", transfer_buffer[0], ··· 211 212 if (priv->device_type == KOBIL_ADAPTER_B_PRODUCT_ID || 212 213 priv->device_type == KOBIL_ADAPTER_K_PRODUCT_ID) { 213 214 /* Setting Baudrate, Parity and Stopbits */ 214 - result = usb_control_msg(port->serial->dev, 215 - usb_sndctrlpipe(port->serial->dev, 0), 216 - SUSBCRequest_SetBaudRateParityAndStopBits, 217 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, 218 - SUSBCR_SBR_9600 | SUSBCR_SPASB_EvenParity | 219 - SUSBCR_SPASB_1StopBit, 220 - 0, 221 - NULL, 222 - 0, 223 - KOBIL_TIMEOUT 224 - ); 215 + result = kobil_ctrl_send(port, SUSBCRequest_SetBaudRateParityAndStopBits, 216 + SUSBCR_SBR_9600 | SUSBCR_SPASB_EvenParity | SUSBCR_SPASB_1StopBit); 225 217 dev_dbg(dev, "%s - Send set_baudrate URB returns: %i\n", __func__, result); 226 218 227 219 /* reset all queues */ 228 - result = usb_control_msg(port->serial->dev, 229 - usb_sndctrlpipe(port->serial->dev, 0), 230 - SUSBCRequest_Misc, 231 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, 232 - SUSBCR_MSC_ResetAllQueues, 233 - 0, 234 - NULL, 235 - 0, 236 - KOBIL_TIMEOUT 237 - ); 220 + result = kobil_ctrl_send(port, SUSBCRequest_Misc, SUSBCR_MSC_ResetAllQueues); 238 221 dev_dbg(dev, "%s - Send reset_all_queues URB returns: %i\n", __func__, result); 239 222 } 240 223 if (priv->device_type == KOBIL_USBTWIN_PRODUCT_ID || ··· 366 385 if (!transfer_buffer) 367 386 return -ENOMEM; 368 387 369 - result = usb_control_msg(port->serial->dev, 370 - usb_rcvctrlpipe(port->serial->dev, 0), 371 - SUSBCRequest_GetStatusLineState, 372 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_IN, 373 - 0, 374 - 0, 375 - transfer_buffer, 376 - transfer_buffer_length, 377 - KOBIL_TIMEOUT); 378 - 388 + result = kobil_ctrl_recv(port, SUSBCRequest_GetStatusLineState, 0, 389 + transfer_buffer, transfer_buffer_length); 379 390 dev_dbg(&port->dev, "Send get_status_line_state URB returns: %i\n", 380 391 result); 381 392 if (result < 1) { ··· 419 446 } 420 447 421 448 if (val) { 422 - result = usb_control_msg(port->serial->dev, 423 - usb_sndctrlpipe(port->serial->dev, 0), 424 - SUSBCRequest_SetStatusLinesOrQueues, 425 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, 426 - val, 427 - 0, 428 - NULL, 429 - 0, 430 - KOBIL_TIMEOUT); 449 + result = kobil_ctrl_send(port, SUSBCRequest_SetStatusLinesOrQueues, val); 431 450 if (result < 0) { 432 451 dev_err(dev, "failed to set status lines: %d\n", result); 433 452 return result; ··· 471 506 tty->termios.c_cflag &= ~CMSPAR; 472 507 tty_encode_baud_rate(tty, speed, speed); 473 508 474 - result = usb_control_msg(port->serial->dev, 475 - usb_sndctrlpipe(port->serial->dev, 0), 476 - SUSBCRequest_SetBaudRateParityAndStopBits, 477 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, 478 - urb_val, 479 - 0, 480 - NULL, 481 - 0, 482 - KOBIL_TIMEOUT 483 - ); 509 + result = kobil_ctrl_send(port, SUSBCRequest_SetBaudRateParityAndStopBits, urb_val); 484 510 if (result) { 485 511 dev_err(&port->dev, "failed to update line settings: %d\n", 486 512 result); ··· 492 536 493 537 switch (cmd) { 494 538 case TCFLSH: 495 - result = usb_control_msg(port->serial->dev, 496 - usb_sndctrlpipe(port->serial->dev, 0), 497 - SUSBCRequest_Misc, 498 - USB_TYPE_VENDOR | USB_RECIP_ENDPOINT | USB_DIR_OUT, 499 - SUSBCR_MSC_ResetAllQueues, 500 - 0, 501 - NULL, 502 - 0, 503 - KOBIL_TIMEOUT 504 - ); 505 - 539 + result = kobil_ctrl_send(port, SUSBCRequest_Misc, SUSBCR_MSC_ResetAllQueues); 506 540 dev_dbg(&port->dev, 507 541 "%s - Send reset_all_queues (FLUSH) URB returns: %i\n", 508 542 __func__, result);