@@ -147,50 +147,30 @@ struct lme2510_state {
147
147
u8 dvb_usb_lme2510_firmware ;
148
148
};
149
149
150
- static int lme2510_bulk_write (struct usb_device * dev ,
151
- u8 * snd , int len , u8 pipe )
152
- {
153
- int actual_l ;
154
-
155
- return usb_bulk_msg (dev , usb_sndbulkpipe (dev , pipe ),
156
- snd , len , & actual_l , 100 );
157
- }
158
-
159
- static int lme2510_bulk_read (struct usb_device * dev ,
160
- u8 * rev , int len , u8 pipe )
161
- {
162
- int actual_l ;
163
-
164
- return usb_bulk_msg (dev , usb_rcvbulkpipe (dev , pipe ),
165
- rev , len , & actual_l , 200 );
166
- }
167
-
168
150
static int lme2510_usb_talk (struct dvb_usb_device * d ,
169
- u8 * wbuf , int wlen , u8 * rbuf , int rlen )
151
+ u8 * wbuf , int wlen , u8 * rbuf , int rlen )
170
152
{
171
153
struct lme2510_state * st = d -> priv ;
172
- u8 * buff = st -> usb_buffer ;
173
154
int ret = 0 ;
174
155
175
- ret = mutex_lock_interruptible (& d -> usb_mutex );
156
+ if (max (wlen , rlen ) > sizeof (st -> usb_buffer ))
157
+ return - EINVAL ;
176
158
159
+ ret = mutex_lock_interruptible (& d -> usb_mutex );
177
160
if (ret < 0 )
178
161
return - EAGAIN ;
179
162
180
- /* the read/write capped at 64 */
181
- memcpy (buff , wbuf , (wlen < 64 ) ? wlen : 64 );
163
+ memcpy (st -> usb_buffer , wbuf , wlen );
182
164
183
- ret |= lme2510_bulk_write (d -> udev , buff , wlen , 0x01 );
165
+ ret = dvb_usbv2_generic_rw_locked (d , st -> usb_buffer , wlen ,
166
+ st -> usb_buffer , rlen );
184
167
185
- ret |= lme2510_bulk_read (d -> udev , buff , (rlen < 64 ) ?
186
- rlen : 64 , 0x01 );
187
-
188
- if (rlen > 0 )
189
- memcpy (rbuf , buff , rlen );
168
+ if (rlen )
169
+ memcpy (rbuf , st -> usb_buffer , rlen );
190
170
191
171
mutex_unlock (& d -> usb_mutex );
192
172
193
- return ( ret < 0 ) ? - ENODEV : 0 ;
173
+ return ret ;
194
174
}
195
175
196
176
static int lme2510_stream_restart (struct dvb_usb_device * d )
@@ -1259,6 +1239,8 @@ static struct dvb_usb_device_properties lme2510_props = {
1259
1239
.bInterfaceNumber = 0 ,
1260
1240
.adapter_nr = adapter_nr ,
1261
1241
.size_of_priv = sizeof (struct lme2510_state ),
1242
+ .generic_bulk_ctrl_endpoint = 0x01 ,
1243
+ .generic_bulk_ctrl_endpoint_response = 0x01 ,
1262
1244
1263
1245
.download_firmware = lme2510_download_firmware ,
1264
1246
0 commit comments