@@ -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
113128static 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