Skip to content

Commit d3411f6

Browse files
Malcolm Priestleymchehab
authored andcommitted
media: lmedm04: use dvb_usbv2_generic_rw_locked
Use dvb-usb-v2 generic usb function for bulk transfers and simplify logic. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
1 parent 8824e50 commit d3411f6

File tree

1 file changed

+12
-30
lines changed

1 file changed

+12
-30
lines changed

drivers/media/usb/dvb-usb-v2/lmedm04.c

Lines changed: 12 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -147,50 +147,30 @@ struct lme2510_state {
147147
u8 dvb_usb_lme2510_firmware;
148148
};
149149

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-
168150
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)
170152
{
171153
struct lme2510_state *st = d->priv;
172-
u8 *buff = st->usb_buffer;
173154
int ret = 0;
174155

175-
ret = mutex_lock_interruptible(&d->usb_mutex);
156+
if (max(wlen, rlen) > sizeof(st->usb_buffer))
157+
return -EINVAL;
176158

159+
ret = mutex_lock_interruptible(&d->usb_mutex);
177160
if (ret < 0)
178161
return -EAGAIN;
179162

180-
/* the read/write capped at 64 */
181-
memcpy(buff, wbuf, (wlen < 64) ? wlen : 64);
163+
memcpy(st->usb_buffer, wbuf, wlen);
182164

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);
184167

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);
190170

191171
mutex_unlock(&d->usb_mutex);
192172

193-
return (ret < 0) ? -ENODEV : 0;
173+
return ret;
194174
}
195175

196176
static int lme2510_stream_restart(struct dvb_usb_device *d)
@@ -1259,6 +1239,8 @@ static struct dvb_usb_device_properties lme2510_props = {
12591239
.bInterfaceNumber = 0,
12601240
.adapter_nr = adapter_nr,
12611241
.size_of_priv = sizeof(struct lme2510_state),
1242+
.generic_bulk_ctrl_endpoint = 0x01,
1243+
.generic_bulk_ctrl_endpoint_response = 0x01,
12621244

12631245
.download_firmware = lme2510_download_firmware,
12641246

0 commit comments

Comments
 (0)