@@ -124,16 +124,18 @@ static int klsi_105_chg_port_settings(struct usb_serial_port *port,
124
124
{
125
125
int rc ;
126
126
127
- rc = usb_control_msg (port -> serial -> dev ,
128
- usb_sndctrlpipe (port -> serial -> dev , 0 ),
129
- KL5KUSB105A_SIO_SET_DATA ,
130
- USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_INTERFACE ,
131
- 0 , /* value */
132
- 0 , /* index */
133
- settings ,
134
- sizeof (struct klsi_105_port_settings ),
135
- KLSI_TIMEOUT );
136
- if (rc < 0 )
127
+ rc = usb_control_msg_send (port -> serial -> dev ,
128
+ 0 ,
129
+ KL5KUSB105A_SIO_SET_DATA ,
130
+ USB_TYPE_VENDOR | USB_DIR_OUT |
131
+ USB_RECIP_INTERFACE ,
132
+ 0 , /* value */
133
+ 0 , /* index */
134
+ settings ,
135
+ sizeof (struct klsi_105_port_settings ),
136
+ KLSI_TIMEOUT ,
137
+ GFP_KERNEL );
138
+ if (rc )
137
139
dev_err (& port -> dev ,
138
140
"Change port settings failed (error = %d)\n" , rc );
139
141
@@ -167,28 +169,21 @@ static int klsi_105_get_line_state(struct usb_serial_port *port,
167
169
unsigned long * line_state_p )
168
170
{
169
171
int rc ;
170
- u8 * status_buf ;
172
+ u8 status_buf [ KLSI_STATUSBUF_LEN ] ;
171
173
__u16 status ;
172
174
173
- status_buf = kmalloc (KLSI_STATUSBUF_LEN , GFP_KERNEL );
174
- if (!status_buf )
175
- return - ENOMEM ;
176
-
177
175
status_buf [0 ] = 0xff ;
178
176
status_buf [1 ] = 0xff ;
179
- rc = usb_control_msg (port -> serial -> dev ,
180
- usb_rcvctrlpipe (port -> serial -> dev , 0 ),
181
- KL5KUSB105A_SIO_POLL ,
182
- USB_TYPE_VENDOR | USB_DIR_IN ,
183
- 0 , /* value */
184
- 0 , /* index */
185
- status_buf , KLSI_STATUSBUF_LEN ,
186
- 10000
187
- );
188
- if (rc != KLSI_STATUSBUF_LEN ) {
177
+ rc = usb_control_msg_recv (port -> serial -> dev , 0 ,
178
+ KL5KUSB105A_SIO_POLL ,
179
+ USB_TYPE_VENDOR | USB_DIR_IN ,
180
+ 0 , /* value */
181
+ 0 , /* index */
182
+ status_buf , KLSI_STATUSBUF_LEN ,
183
+ 10000 ,
184
+ GFP_KERNEL );
185
+ if (rc ) {
189
186
dev_err (& port -> dev , "reading line status failed: %d\n" , rc );
190
- if (rc >= 0 )
191
- rc = - EIO ;
192
187
} else {
193
188
status = get_unaligned_le16 (status_buf );
194
189
@@ -198,7 +193,6 @@ static int klsi_105_get_line_state(struct usb_serial_port *port,
198
193
* line_state_p = klsi_105_status2linestate (status );
199
194
}
200
195
201
- kfree (status_buf );
202
196
return rc ;
203
197
}
204
198
@@ -245,7 +239,7 @@ static int klsi_105_open(struct tty_struct *tty, struct usb_serial_port *port)
245
239
int retval = 0 ;
246
240
int rc ;
247
241
unsigned long line_state ;
248
- struct klsi_105_port_settings * cfg ;
242
+ struct klsi_105_port_settings cfg ;
249
243
unsigned long flags ;
250
244
251
245
/* Do a defined restart:
@@ -255,27 +249,22 @@ static int klsi_105_open(struct tty_struct *tty, struct usb_serial_port *port)
255
249
* Then read the modem line control and store values in
256
250
* priv->line_state.
257
251
*/
258
- cfg = kmalloc (sizeof (* cfg ), GFP_KERNEL );
259
- if (!cfg )
260
- return - ENOMEM ;
261
252
262
- cfg -> pktlen = 5 ;
263
- cfg -> baudrate = kl5kusb105a_sio_b9600 ;
264
- cfg -> databits = kl5kusb105a_dtb_8 ;
265
- cfg -> unknown1 = 0 ;
266
- cfg -> unknown2 = 1 ;
267
- klsi_105_chg_port_settings (port , cfg );
253
+ cfg . pktlen = 5 ;
254
+ cfg . baudrate = kl5kusb105a_sio_b9600 ;
255
+ cfg . databits = kl5kusb105a_dtb_8 ;
256
+ cfg . unknown1 = 0 ;
257
+ cfg . unknown2 = 1 ;
258
+ klsi_105_chg_port_settings (port , & cfg );
268
259
269
260
spin_lock_irqsave (& priv -> lock , flags );
270
- priv -> cfg .pktlen = cfg -> pktlen ;
271
- priv -> cfg .baudrate = cfg -> baudrate ;
272
- priv -> cfg .databits = cfg -> databits ;
273
- priv -> cfg .unknown1 = cfg -> unknown1 ;
274
- priv -> cfg .unknown2 = cfg -> unknown2 ;
261
+ priv -> cfg .pktlen = cfg . pktlen ;
262
+ priv -> cfg .baudrate = cfg . baudrate ;
263
+ priv -> cfg .databits = cfg . databits ;
264
+ priv -> cfg .unknown1 = cfg . unknown1 ;
265
+ priv -> cfg .unknown2 = cfg . unknown2 ;
275
266
spin_unlock_irqrestore (& priv -> lock , flags );
276
267
277
- kfree (cfg );
278
-
279
268
/* READ_ON and urb submission */
280
269
rc = usb_serial_generic_open (tty , port );
281
270
if (rc )
0 commit comments